40

我们使用 AWS (EC2) 上的简单 Hello World 节点服务器对节点性能进行基准测试。

无论我们使用什么大小的实例,Node 似乎总是在 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);

Node应该能够处理更多的正确吗?任何想法将不胜感激。

文件描述符(软、硬、系统)也设置为 65096)

4

2 回答 2

42

使用该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 });
于 2013-06-10T22:19:43.090 回答
14

您已达到进程可以使用的文件描述符的默认限制 (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
于 2013-06-11T04:18:50.010 回答