如何判断是否有任何MySQL连接被删除或超时?

时间:2011-02-27 01:57:32

标签: php mysql linux database-connection

客户端正在使用PHP连接到MySQL。 PHP脚本和MySQL数据库位于2个不同的Linux服务器上。他抱怨数据库连接被丢弃或超时,并让我看一看。

MySQL中是否有任何地方可以显示已删除或超时的连接数和数量?我查看了慢查询日志,但没有看到任何内容。

有关如何诊断此丢弃/超时数据库连接问题的任何建议吗?

由于

2 个答案:

答案 0 :(得分:5)

你当然可以监控

Aborted_clients

状态变量(即使用SHOW GLOBAL STATUS)并查看连接超时。

然而,检测到这一点的最佳位置是在客户端。假设您在客户端进行了正确的错误处理和日志记录,您通常会看到着名的“服务器已经消失”错误。

由于您的应用程序是用PHP编写的,因此它可能没有正确的错误处理/日志记录。你应该解决这个问题。


这是导致Apache prefork服务器滥用持久连接的常见原因。因为Apache prefork服务器通常会使进程长时间无法工作,但是持久连接可以从每个进程保持打开状态,连接最终可能会空闲太长时间,从而产生“早晨错误”。

对此的修复很简单 - 只需关闭持久连接即可。几乎在每种情况下,这都是不恰当的悲观情绪。

答案 1 :(得分:3)

关于服务器日志,您可以访问http://dev.mysql.com/doc/refman/5.0/en/server-logs.html了解更多信息

在PHP中:

  • 该链接是可以传递到[mysql_ping]的资源,根据网络状态,这将返回true / false。

例如:

if(mysql_ping($link))
{
    //Still Connected.
}