【发布时间】:2010-01-19 16:04:58
【问题描述】:
我有一个应用程序服务器(Linux 机器上的 jetty 6)托管 15 个个人应用程序(个人战争)。每隔 3 或 4 天,我就会收到来自 nagios 的关于打开的 TCP 连接数的警报。经过检查,我发现这些连接中的绝大多数都是到 MySQL 服务器的。
netstat -ntu | grep TIME_WAIT
在 MySQL 服务器上显示来自应用程序服务器的 10,000 多个连接(注意状态为 TIME_WAIT)。如果我重新启动码头,连接将下降到几乎为零。
节目状态中的一些有趣的值:
mysql> show status;
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| Aborted_clients | 244 |
| Aborted_connects | 695853860 |
| Connections | 697203154 |
| Max_used_connections | 77 |
+--------------------------+-----------+
“显示进程列表”不会显示任何异常(这是我所期望的,因为大多数连接都是空闲的 - 请记住上面的 TIME_WAIT 状态)。
我有一个用于此服务器的测试环境,但它从来没有任何问题。它显然不会获得太多流量,并且应用程序服务器不断重新启动,因此调试没有太大帮助。我想我可以深入研究每个单独的应用程序并编写一个负载测试来访问数据库代码,但这会花费很多时间/麻烦。
我有什么想法可以追踪抓住所有这些连接并且永不放弃的应用程序吗?
【问题讨论】: