【问题标题】:Node.js apache bench testNode.js apache 基准测试
【发布时间】:2012-05-14 12:14:03
【问题描述】:

播放并尝试查看 node.js 使用 apache bench 从磁盘提供静态文件的速度有多快

ab -r -n 10000 -c 1000 http://server:8080/loadtestfile.txt

我在 OSX Lion 上的 Ubuntu 11.04 x64 VirtualBox VM 上遇到了 ulimit 问题

(node) Hit max file limit. Increase "ulimit - n"

我不能再增加限制了。

$ ulimit -n 1000000
$ limit -n 1100000
-su: ulimit: open files: cannot modify limit: Operation not permitted

这是强制 node.js 从磁盘重新加载文件以服务每个 HTTP 请求的正确方法吗?如何将限制增加到 1000000 以上?

正常的 curl 请求有效:

curl http://server:8080/loadtestfile.txt

代码

var sys = require('sys'),
http = require('http'),
fs = require('fs'),
index;

http.createServer(function(request, response) {

fs.readFile('./loadtestfile.txt', function (err, data) {

    response.writeHeader(200, {"Content-Type": "text/plain"});
    response.write(data);
    response.end();
 });

}).listen(8080);

【问题讨论】:

    标签: node.js performance-testing apachebench


    【解决方案1】:

    理想情况下,您的应用程序将在给定的限制范围内运行;它应该干净地处理 accept(2) 返回错误条件,并将 errno(3) 设置为 EMFILEENFILE 通过在现有连接终止之前不尝试接受另一个连接。

    但是,修复应用程序以优雅地处理这种情况可能很困难;如果您只是想进一步提高限制以进行更多测试,则有两种可能性。

    • 编辑/etc/security/limits.conf 以将nofile 限制的用户帐户硬限制提高到更高,然后再次登录您的用户帐户。

    • 在 root shell 中进行测试;您可以直接以root 登录,也可以使用sudo -ssu 启动shell,然后从那里运行ulimit -n 命令。

    困难在于提高限制需要管理员权限。 (当您同时在系统上拥有几百个用户时,您希望让他们保持良好状态......)

    不过,我猜你的应用程序会遇到系统范围的最大打开文件数限制;通过/proc/sys/fs/file-max 配置。如果应用程序抱怨,也请提高该限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      相关资源
      最近更新 更多