我确实运行了一个 Web 应用程序,我将其精简到最大以避免出现过高的 tcpsndbuf 值。几天后,在流量非常非常少的情况下,仍会出现 tcpsndbuf 上的失败。
我最初以为这是一个应用程序容器问题,如下所述线。
tcpsndbuf 值不断上升。似乎缓冲区值从未完全释放。因此,它不断增加,直到突破限制并要求 100% CPU 节流。
然而,在排除了休眠配置、mysql 驱动程序错误等不同来源后,我想专注于由 Parallel Plesk/Power Panel 和 apache proxy_mod 管理的 openvz。
我之所以相信这一点,是因为/usr/sbin/apache2 -k start
进程列表中列出了大量进程(Parallels Power Panel、进程)
我使用 proxy_mod 将端口 80 路由到位于不同端口但同一主机上的应用程序服务器。
我如何详细分析套接字状态?例如,哪个应用程序锁定了哪个缓冲区,什么时候分配的?我可以看到 proxy_mod 连接吗?这种类型的数据可用吗?非常欢迎任何其他有关 tcpsndbuf 引发最大 CPU 负载的提示。