2

我们有一个使用 Apache mod 代理的相当繁忙的网站(每天 100 万页浏览量),在 TIME_WAIT 状态下,连接数(>1,000)不断超载。连接到端口 3306(mysql),但 mysql 只显示几个连接(显示进程列表)并且执行良好。我们已经尝试改变一堆东西(保持活力开/关),但似乎没有任何帮助。所有其他系统资源都在合理范围内。

我四处搜索,这似乎表明更改了 tcp_time_wait_interval。但这似乎有点激烈。我以前在繁忙的网站上工作过,但从未遇到过这个问题。

有什么建议么?

4

3 回答 3

5

每个 time_wait 连接都是一个已经关闭的连接。

您可能正在连接到 mysql,发出查询,然后断开连接。对页面上的每个查询重复此操作。考虑使用连接池工具,或者至少是一个保持数据库连接的全局变量。如果您使用全局,则必须在页面末尾关闭连接。希望你有一些共同的地方,你可以把它,比如一个页脚包含。

作为奖励,您应该获得更快的页面加载。MySQL 可以快速连接,但不必重新连接甚至更快。

于 2009-05-02T01:01:01.160 回答
1

如果您的客户端应用程序使用 JDBC,您可能会遇到这个错误: http ://bugs.mysql.com/bug.php?id=56979 我相信 php 也有同样的问题,干杯,Gilles。

于 2010-09-24T07:21:05.147 回答
0

我们有一个类似的问题,我们的 web 服务器都冻结了,因为我们的 php 正在连接到一个 mysql 服务器,该服务器被设置为对传入连接进行反向主机查找。

当事情变慢时,它工作得很好,但在负载下,响应时间突然飙升,所有的 apache 服务器都卡在了 time_wait 中。

我们解决问题的方法是使用 xdebug 在高负载下的脚本上创建分析数据,然后查看它。mysql_connect 调用占用了 80-90% 的执行时间。

于 2009-05-02T00:23:58.907 回答