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)
设置为EMFILE
或ENFILE
通过不尝试接受另一个连接,直到现有的连接死亡。
但是,修复应用程序来处理这种情况可能是困难的; 如果你只是想进一步提高你的极限做更多的testing,有两种可能性。
-
编辑
/etc/security/limits.conf
将nofile
限制的用户帐户的硬性限制提高到更高的级别,然后再次login您的用户帐户。 -
在一个根shell中进行testing; 你可以直接以
root
身份login,或使用sudo -s
或su
启动shell,然后从那里运行ulimit -n
命令。
困难是因为提高限制需要pipe理权限。 (当你同时在系统上有几百个用户时,你想让他们玩的很好…)
但是,我猜测你的应用程序也会运行到系统范围的最大打开文件数限制; 这是通过/proc/sys/fs/file-max
。 如果应用程序投诉,也提高这个限制。