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

Con*_*ion 2 php mysql linux database-connection

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

在MySQL中是否有任何地方可以告诉我什么以及有多少连接被删除或超时?我查看了慢查询日志并没有看到任何内容.

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

谢谢

Mar*_*rkR 5

你当然可以监控

Aborted_clients
Run Code Online (Sandbox Code Playgroud)

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

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

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


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

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