Node.js apache替换测试

时间:2012-05-04 23:47:32

标签: node.js performance-testing apachebench

播放并尝试查看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 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);

1 个答案:

答案 0 :(得分:1)

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

然而,修复应用程序以优雅地处理此案例可能很困难;如果你只是想进一步提高你的极限以进行更多测试,那么有两种可能性。

  • 修改/etc/security/limits.conf,将nofile限制的用户帐户的硬限制提高到更高的值,然后重新登录您的用户帐户。

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

难点在于提高限额需要管理员权限。 (当你同时在系统上有几百个用户时,你想保持他们玩得很好......)

但是,我猜你的应用程序将运行到系统范围内的最大打开文件数限制;通过/proc/sys/fs/file-max配置的。如果申请人抱怨,也要提高这个限制。