关于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的更多相关文章

  1. nodejs学习笔记二(get请求、post请求、 querystring模块,url模块)

    请求数据 前台:form.ajax.jsonp 后台:接受请求并返回响应数据     前台<= http协议 =>后台   常用的请求的方式: 1.GET           数据在url ...

  2. nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token

    最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...

  3. NodeJS系列~第四个小例子,NodeJs处理Get请求和Post请求

    返回目录 说在前 对于HTTP请求来说,我们通常使用的是Get和Post,除此之外还有put,delete等,而对于get来说,比较lightweight,只是对字符串的传输,它会被添加到URL地址里 ...

  4. nodejs通过代理(proxy)发送http请求(request)

    有可能有这样的需求,需要node作为web服务器通过另外一台http/https代理服务器发http或者https请求,废话不多说直接上代码大家都懂的: var http = require('htt ...

  5. nodejs(上)(获取请求参数)

    Node.js是一个让JavaScript运行在服务器端的开发平台    参考文章 nodejs特点: 单线程 异步非阻塞i/o(异步相对节省资源,把那个等待的时间利用上了) 事件驱动 稳定性差(因为 ...

  6. 【C#】WebService接受跨域请求及返回json数据

    问题概述 通过Web Service发布服务供客户端调用是一种非常简单.方便.快速的手段,并且服务发布后会有一个服务说明页面,直观明了,如图: 一般情况下,在web页面中的JavaScript中调用W ...

  7. iOS 如何解决并发请求时,只接受最后一个请求返回的结果

      大致意思是 虽然NSOperation 的cancel 并不能取消请求,但是可以对这个NSOperation进行标记. 当cancel 属性是YES时,表明 NSOperation虽然已经执行,并 ...

  8. Jmeter之Json Path Extractor 接受上一个请求的响应参数

    最近在使用Jmeter进行接口测试,被一个问题困扰了很久,就是第二个请求如何接收上一个请求响应中的参数,刚开始尝试着用网上普遍说的正则表达式,长了了N多次之,都没有达到我想要的效果,被整的够惨,于是, ...

  9. nodejs 服务器实现区分多客户端请求服务

    初始实现 var net = require('net');//1 引入net模块 var chatServer = net.createServer();//创建net服务器 var clientL ...

随机推荐

  1. java实例化对象的方式

    一.Java中创建(实例化)对象的五种方式  1.用new语句直接创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); ...

  2. strncpy,strcpy

    strncpy不会为des自动添加“\0” strcpy遇空结束,自动添加结束符 结论: 1.使用strcpy时一定不能用于无结束符的字符串,因为strcpy依赖\0判断源字符串的结束 2.使用str ...

  3. wampserver的安装以及使用

    一.点击wampserver.exe默认安装 二.安装成功之后测试        (1)测试基本配置         浏览器地址栏输入http://localhost/index.php       ...

  4. 【BZOJ】3505: [Cqoi2014]数三角形

    题意 \(n * m(1 \le n, m \le 1000)\)的网格,求顶点在格点上三角形的个数. 分析 假设\(n \le m\) \(ans = \binom{(n+1) * (m+1)}{3 ...

  5. php正则获取html图片标签信息(采集图片)

    php获取html图片标签信息(采集图片),实现图片采集及其他功能,带代码如下: <?php $str="<img src='./a.jpg'/>111111<img ...

  6. HDU2527 哈夫曼编码

    Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  7. bug2--工程性错误

    1问题场景:图片上传失败,打印log.http header 有数据.不报错,通过流写入文件后,文件被创建,但是大小为0kb. 执行:df -h 发现linux的磁盘 used 100%. 原来是没有 ...

  8. NSDecimalNumber用于精度准确的计算

    在处理金额计算时,往往会涉及到小数,由于Double类型不准确,无法做到产品的要求.为了保证金额计算的准确性,建议使用NSDecimalNumber. 1.创建对象(常用的方法) // mantiss ...

  9. PyCharm2016.2专业版注册码

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  10. C# 的一些语法特性

    1.? -NullableC# 里像int,bool,double 这样的struct和enum类型都不能为null.如果确实想在值域上加上null的话,Nullable就派上用场了.T?是Nulla ...