所以基本上我已经设置了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;
考虑到在服务器资源方面仍然有空间,我怎么可能增加这个限制呢?
由于
答案 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