Node.js apache 基准测试

标签 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 请求有效:

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在现有连接终止之前不尝试接受另一个连接。

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

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

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

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

但是,我猜测您的应用程序也会遇到系统范围内打开文件的最大数量限制;通过 /proc/sys/fs/file-max 配置。如果应用程序提示,也提高该限制。

关于Node.js apache 基准测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457497/

相关文章:

performance-testing - 为并发 apache bench 请求发送不同的 POST json

javascript - Sinon 的意外断言错误

node.js - 使用 jenkins 在 EC2 上运行的 pm2 不起作用?

node.js - 如何通过nodejs以正确的编码保存pdf

performance-testing - libaio 引擎应该仅与无缓冲 io(直接)一起使用吗?

javascript - 为什么用 null 初始化对象的属性会提高速度?

Apache Bench - 请求失败

php - Apache 基准文档长度与 YSlow 页面的总重量

javascript - 如何从 Node REPL 解析带有 jsdom 的 DOM

c++ - 为什么这个虚函数调用如此昂贵?