Nginx 瓶颈在每秒 55k 请求,但服务器仍然有很多可以提供
Nginx bottleneck at 55k Requests per Second but server still has plenty to give
所以基本上我已经设置了 Nginx OpenResty 并尝试优化配置以获得最大性能/请求。
服务器显然可以在不眨眼的情况下处理很多事情,但似乎在每秒大约 55k 请求后,Nginx 将不会再建立任何连接,如统计数据所示。
我正在使用 Luameter 获取我的读数,并通过使用云平台对我的服务器施加压力,每秒执行 50k 个请求或每秒 100k 个请求,永远不会 returns 超过来自 Nginx 统计的 50k 个请求。
服务器有一个完整的 1gbps 端口,但在承受压力时从不发送超过 330mbps 的输出。它还有一个 SSD HDD。
Cpu 在每秒 10 万个请求时达到 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;
考虑到服务器资源方面仍有工作空间,我怎么可能增加此限制?
谢谢
极限是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/
根据 mikhailov 的评论,这特别有助于分散网络的 IRQ 负载,这可能对您的情况有所帮助:
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
所以基本上我已经设置了 Nginx OpenResty 并尝试优化配置以获得最大性能/请求。
服务器显然可以在不眨眼的情况下处理很多事情,但似乎在每秒大约 55k 请求后,Nginx 将不会再建立任何连接,如统计数据所示。
我正在使用 Luameter 获取我的读数,并通过使用云平台对我的服务器施加压力,每秒执行 50k 个请求或每秒 100k 个请求,永远不会 returns 超过来自 Nginx 统计的 50k 个请求。
服务器有一个完整的 1gbps 端口,但在承受压力时从不发送超过 330mbps 的输出。它还有一个 SSD HDD。
Cpu 在每秒 10 万个请求时达到 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;
考虑到服务器资源方面仍有工作空间,我怎么可能增加此限制?
谢谢
极限是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/
根据 mikhailov 的评论,这特别有助于分散网络的 IRQ 负载,这可能对您的情况有所帮助:
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus