有时我的 http 服务器没有响应,并且我会看到诸如连接重置或超时之类的错误

有时我的 http 服务器没有响应,并且我会看到诸如连接重置或超时之类的错误

以下是来自 munin 的图表,可能会有所帮助 穆宁格拉奥

这里还有我的http.conf

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   40
ServerLimit      2048
MaxClients       2048
MaxRequestsPerChild  8000
</IfModule>

PHP 在几毫秒内生成页面,但我不知道为什么客户端无法正确接收它。你还会看到最后几分钟内下降的连接图。当时我无法加载我网站上的几乎所有页面。

答案1

我从网络角度看到的是太多的 TIME_WAIT=9.76K(我不确定 sure 是什么意思)。time_wait 是由于许多 tcp 连接反复打开和关闭而导致系统用尽套接字的情况。您可以使用 netstat -an 来确认它。您可以调整这些参数

             net.ipv4.tcp_timestamps = 1
             net.ipv4.tcp_tw_recycle = 1

tcp_tw_recycle - BOOLEAN
启用快速回收 TIME-WAIT 套接字。默认值为 0。
未经技术专家的建议/要求,不得更改
。不建议启用此选项,因为这会在使用 NAT(网络地址转换)时导致问题。

tcp_tw_reuse - BOOLEAN
当从协议角度来看安全时,允许重用 TIME-WAIT 套接字进行新连接
。默认值为 0。
未经技术专家的建议/要求,不应更改

但在此之前,请进行 tcpdump 并检查新的连接,并与您的应用程序团队核实是否需要这么多的连接。

相关内容