我可以437 SYNs to LISTEN sockets dropped
从netstat -s
运行 nginx 的服务器上的服务器中找到。
我从手册页中找到了以下解释:--statistics, -s, Display summary statistics for each protocol.
那么这个计数是什么437
意思,它是一个快照还是某个时间段的总计数?
答案1
Nginx 接受连接的速度非常快,但是在极高的流量情况下,系统级别的连接积压仍然可能发生(这是应用程序级别连接处理的明显瓶颈),当发生这种情况时,新的连接将被拒绝。
“SYNs to LISTEN sockets removed” 是 Nginx 丢包的症状。我的建议是先使用ngx_http_stub_status_module
[1] 监控 Nginx 活动连接。然后确定当前系统范围内打开的文件描述符并相应地调整内核参数。
somaxconn
可以通过修改和内核变量来增加连接队列大小tcp_max_syn_backlog
。请参阅这些宝贵的资源[2][3]以获取更多信息。
答案2
通常 wmem 和 rmem 的默认值为 212992 字节。显然在繁忙的服务器上不够用。增加到 8MB 后问题就消失了。
sysctl -w net.core.wmem_default=8388608
sysctl -w net.core.rmem_default=8388608