关于nodejs能同时接受多少个请求的问题?////zzz

关于nodejs能同时接受多少个请求的问题?

最近学习node,看了不少教程,都在赞赏nodejs的异步I/O,异步I/O的特色就是,每接收一个请求,使用异步调用处理请求,不用等待结果,能够继续运行其余操做,也就是说能够继续接受请求。那它到底能接受?因而,我写了个程序来测试,代码以下:node

// server.js // 处理一个请求须要5秒,经过setTimeout设置5秒后响应 var http = require("http"); var n = 0; http.createServer(function (req, res) { n++; setTimeout(function() { console.log("Accept " + n + "request."); res.end("test"); }, 5000); }).listen(3000);
// client.js // 发送一个请求 exports.send = function () { var http = require('http'); var options = { host: 'localhost', port: '3000', path: '/', method: 'GET', }; var req = http.request(options, function(res){ exports.counter += 1; res.setEncoding('utf8'); res.on('data', function (c) { //console.log(c); }); res.on('end', function() { exports.seccess += 1; console.log("Response: " + exports.seccess); }); }); req.end(); }; exports.seccess = 0;
// attack.js // 在1秒内发出约50000个请求 var client = require('./client'); var d = 1000, t = Date.now(); while(Date.now() - t < d) { client.send(); } console.log('end.');

运行server.jsmarkdown

> node server.js

运行atack.js发起请求,(经测试每秒能发出约50000个请求):异步

> node atack.js

结果:socket

Accept 5request. Accept 5request. Accept 5request. Accept 5request. Accept 5request. Accept 10request. Accept 10request. Accept 10request. Accept 10request. Accept 10request. Accept 15request. Accept 15request. Accept 15request. Accept 15request. Accept 15request. // 省略后面N条

经过结果能够知道server.js在5秒内只接受了5个请求,这是为何呢?学习

Node.js 的 socket 模块的一个限制致使的,好像是同一 IP 不能链接超过 5 个 socket。测试

试试 require('http').globalAgent.maxSockets = Infinityui

相关文章
相关标签/搜索