Nginx每秒55k请求的瓶颈但服务器仍然有很多东西可以提供

时间:2015-07-05 07:27:46

标签: performance nginx openresty

所以基本上我已经设置了Nginx OpenResty并尝试优化配置以获得最佳性能/请求。

服务器可以清晰地处理很多甚至没有闪烁,但似乎在每秒55k左右的请求后,Nginx不再建立任何连接,如每个统计数据所示。

我正在使用Luameter获取我的读数,并使用云平台强调我的服务器每秒执行50k请求或每秒100k请求永远不会返回超过Nginx统计数据的50k请求。

服务器有一个完整的1gbps端口,但在受到压力时绝不会发送超过330mbps的输出。它还有一个SSD硬盘。

当以每秒10万次请求命中时,Cpu为45%。

Ulimit无限制且ulimit -n 999999

这是我的nginx配置的片段:

user  nobody; worker_processes  8; worker_rlimit_nofile 262144; error_log            logs/error.log crit;

events {
worker_connections  100000;
use epoll;
multi_accept on; }

http {

open_file_cache max=200000 inactive=20s; open_file_cache_valid 30s;  
open_file_cache_min_uses 2; open_file_cache_errors on;

考虑到在服务器资源方面仍然有空间,我怎么可能增加这个限制呢?

由于

2 个答案:

答案 0 :(得分:1)

限制是TCP / IP堆栈配置问题。看看这个:https://www.percona.com/live/mysql-conference-2015/sites/default/files/slides/all_your_iops_are_belong_to_usPLMCE2015.pdf

然而,不要期望单箱太多,分散负荷。

<强>更新

可以根据官方性能调整建议审核Nginx配置:https://www.nginx.com/blog/tuning-nginx/

答案 1 :(得分:1)

除了mikhailov的评论之外,这特别有助于传播网络的IRQ负载,这可能对您的情况有所帮助:

echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus