我们使用AWS(EC2)上的简单Hello World节点服务器对节点性能进行基准测试。
无论我们使用什么大小的实例节点总是出现在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)
答案 0 :(得分:34)
使用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 });
答案 1 :(得分:12)
您已达到进程可以使用的文件描述符的默认限制(1024)。您可以通过运行“ulimit -n”来检查命令行上的限制。要更改限制,您需要编辑/etc/security/limits.conf。添加以下块:
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
“*”适用于除root之外的所有用户。 root的限制必须单独添加。有软和硬限制。允许用户将自己的限制更改为软限制但不超过硬限制。
文件编辑完成后,再次注销并重新登录。通过运行ulimit -n验证更改。重启你的Node进程,你应该好好去。
还可以使用以下命令增加系统范围的文件描述符限制:
sysctl -w fs.file-max=65535