Node.js apache bench test

玩,并试图看看有多快node.js可以从磁盘使用Apache的工作台静态文件

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); 

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

但是,修复应用程序来处理这种情况可能是困难的; 如果你只是想进一步提高你的极限做更多的testing,有两种可能性。

  • 编辑/etc/security/limits.confnofile限制的用户帐户的硬性限制提高到更高的级别,然后再次login您的用户帐户。

  • 在一个根shell中进行testing; 你可以直接以root身份login,或使用sudo -ssu启动shell,然后从那里运行ulimit -n命令。

困难是因为提高限制需要pipe理权限。 (当你同时在系统上有几百个用户时,你想让他们玩的很好…)

但是,我猜测你的应用程序也会运行到系统范围的最大打开文件数限制; 这是通过/proc/sys/fs/file-max 。 如果应用程序投诉,也提高这个限制。