首页 > 代码库 > 关于nodejs能同时接受多少个请求的问题?////zzz
关于nodejs能同时接受多少个请求的问题?////zzz
关于nodejs能同时接受多少个请求的问题?
最近学习node,看了很多教程,都在赞扬nodejs的异步I/O,异步I/O的特点就是,每接收一个请求,使用异步调用处理请求,不用等待结果,可以继续运行其他操作,也就是说可以继续接受请求。那它到底能接受?于是,我写了个程序来测试,代码如下:
// 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.js
> node server.js
运行atack.js发起请求,(经测试每秒能发出约50000个请求):
> node atack.js
结果:
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 = Infinity
关于nodejs能同时接受多少个请求的问题?////zzz
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。