Node.js最多在1000个并发连接
我们使用AWS(EC2)上的一个简单的Hello World节点服务器对节点性能进行基准testing。
无论我们使用什么大小的实例,节点总是最多显示1000个并发连接(这不是每秒1000个,而是1000个可以一次处理)。 不久之后,CPU峰值和节点基本冻结。
节点v0.10.5
var http = require('http'); var server = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('loaderio-dec86f35bc8ba1b9b604db6c328864c1'); }); server.maxHeadersCount = 0; server.listen(4000);
节点应该能够处理比这更正确的? 任何想法将不胜感激。
此外,文件描述符(软,硬,系统)设置为65096)
使用posix
模块提高您的进程可以使用的文件描述符的数量限制。
安装posix
npm install posix
然后在启动应用程序时运行的代码中
var posix = require('posix'); // raise maximum number of open file descriptors to 10k, // hard limit is left unchanged posix.setrlimit('nofile', { soft: 10000 });
您已达到进程可以使用的文件描述符的默认限制(1024)。 您可以通过运行“ulimit -n”来检查命令行上的限制。 要更改限制,您需要编辑/etc/security/limits.conf。 添加跟随块:
* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535
“*”适用于除root之外的所有用户。 根的限制必须单独添加。 有软硬限制。 用户可以将自己的限制改变为软限制但不超过硬限制。
文件编辑完成后,注销并重新login。 通过运行ulimit -nvalidation更改。 重新启动你的Node进程,你应该很好。
还有一个系统范围的文件描述符限制可以通过以下命令来增加:
sysctl -w fs.file-max=65535