nginx nodejs faye绩效问题



我正在为多个faye聊天服务器进行NGINX负载平衡。我能够在普通的HTTP请求下看到出色的性能。但是,在比较没有NGINX的结果时,WebSocket连接性能非常低。

这是我的nginx cofiguration。

upstream backend {
    server 127.0.0.1:4000;
    server 127.0.0.1:4002;
    server 127.0.0.1:4003;
    server 127.0.0.1:4004;
}
server {
    listen   4001;
    root /var/www/html/laughing-robot;
    index index.html index.htm;
    server_name backend;
    location /faye {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
        location / {
            proxy_http_version 1.1;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   X-NginX-Proxy    true;
            proxy_set_header   Host             $http_host;
            proxy_set_header   Upgrade          $http_upgrade;
            proxy_redirect     off;
            proxy_pass         http://backend;
        }
}

我正在使用websocket-bench进行基准测试Faye Connections(websocket)。

这是out nginx的结果:

user@machine:/etc/nginx/sites-enabled$ websocket-bench -a 2000 -c 500 -t faye http://127.0.0.1:4000/faye
Launch bench with 2000 total connection, 500 concurent connection
0 message(s) send by client
1 worker(s)
WS server : faye
trying : 500 ...
trying : 1000 ...
trying : 1500 ...
trying : 2000 ...
#### steps report ####
┌────────┬─────────────┬────────┬──────────────┐
│ Number │ Connections │ Errors │ Duration(ms) │
├────────┼─────────────┼────────┼──────────────┤
│ 500    │ 500         │ 0      │ 2488         │
├────────┼─────────────┼────────┼──────────────┤
│ 1000   │ 500         │ 0      │ 2830         │
├────────┼─────────────┼────────┼──────────────┤
│ 1500   │ 500         │ 0      │ 2769         │
├────────┼─────────────┼────────┼──────────────┤
│ 2000   │ 500         │ 0      │ 2144         │
└────────┴─────────────┴────────┴──────────────┘
#### total report ####
┌────────┬─────────────┬────────┬──────────────┬──────────────┬──────────────┐
│ Number │ Connections │ Errors │ Message Send │ Message Fail │ Duration(ms) │
├────────┼─────────────┼────────┼──────────────┼──────────────┼──────────────┤
│ 2000   │ 2000        │ 0      │ 0            │ 0            │ 5150         │
└────────┴─────────────┴────────┴──────────────┴──────────────┴──────────────┘

总持续时间在6000 ms下。

这是Nginx负载平衡器的结果:

user@machine:/etc/nginx/sites-enabled$ websocket-bench -a 2000 -c 500 -t faye http://127.0.0.1:4001/faye
Launch bench with 2000 total connection, 500 concurent connection
0 message(s) send by client
1 worker(s)
WS server : faye
trying : 500 ...
trying : 1000 ...
trying : 1500 ...
trying : 2000 ...
#### steps report ####
┌────────┬─────────────┬────────┬──────────────┐
│ Number │ Connections │ Errors │ Duration(ms) │
├────────┼─────────────┼────────┼──────────────┤
│ 500    │ 500         │ 0      │ 6452         │
├────────┼─────────────┼────────┼──────────────┤
│ 1000   │ 500         │ 0      │ 9394         │
├────────┼─────────────┼────────┼──────────────┤
│ 1500   │ 500         │ 0      │ 12772        │
├────────┼─────────────┼────────┼──────────────┤
│ 2000   │ 500         │ 0      │ 16163        │
└────────┴─────────────┴────────┴──────────────┘
#### total report ####
┌────────┬─────────────┬────────┬──────────────┬──────────────┬──────────────┐
│ Number │ Connections │ Errors │ Message Send │ Message Fail │ Duration(ms) │
├────────┼─────────────┼────────┼──────────────┼──────────────┼──────────────┤
│ 2000   │ 2000        │ 0      │ 0            │ 0            │ 19173        │
└────────┴─────────────┴────────┴──────────────┴──────────────┴──────────────┘

总计2000 Connections&500并发连接,Nginx LoadBalancer的性能非常低。

我还配置了nofile&file-max

/etc/security/limits.conf

*       soft    nofile  2048
*       hard    nofile  65536

/etc/sysctl.conf

fs.file-max = 100000

在Fedora上,我在/var/log/nginx/error.log上遇到了很多连接拒绝错误。但是在ubuntu上13.04没有错误。

如果有人能够将我朝正确的方向朝着正确的方向。

谢谢!

您知道https://github.com/observing/balancerbattle?

如果您在ubuntu上没有任何错误,那里的性能是什么?(希望系统的性能是可比的)

无论如何,看一下内核调整部分,您也可以尝试他们在测试中使用的nginx.conf,看看yeilds是否相同的结果。

也应该在可能的话上尝试多个负载测试。您所做的测试是在运行NGINX的服务器上,测试与域上的Acutal外部IP相比如何?

我会建议在开发机上而不是实际服务器上运行负载测试。另外,对于NGINX和节点过程,最高的CPU/内存明智?Nginx Maby是否饿死了您的一个过程和/或测试本身?

WebSockets比SSL更稳定,可能值得测试。

他们将雷神用于测试,这会给您带来相同的结果吗?https://github.com/observing/balancerbattle/blob/master/results/messaging/haproxy/1k.md

相关内容

  • 没有找到相关文章

最新更新