客户端正在使用PHP连接到MySQL。 PHP脚本和MySQL数据库位于2个不同的Linux服务器上。他抱怨数据库连接被丢弃或超时,并让我看一看。
MySQL中是否有任何地方可以显示已删除或超时的连接数和数量?我查看了慢查询日志,但没有看到任何内容。
有关如何诊断此丢弃/超时数据库连接问题的任何建议吗?
由于
答案 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中:
例如:
if(mysql_ping($link))
{
//Still Connected.
}