一位客户正在使用 PHP 连接 MySQL。PHP 脚本和 MySQL 数据库位于 2 个不同的 Linux 服务器上。他抱怨数据库连接断开或超时,并要求我查看一下。
MySQL 中是否有任何地方可以显示哪些连接已断开或超时以及有多少连接已断开或超时?我查看了慢查询日志,但什么也没看到。
关于如何诊断此断开/超时数据库连接问题有什么建议吗?
谢谢
编辑:
慢查询日志已启用my.cnf
:
log-slow-queries=/var/log/mysql-slow-queries.log
当我做
mysql> show global status;
我有:
| Slow_queries | 11402347 |
因此有很多慢查询。但是文件 /var/log/mysql-slow-queries.log 不存在。这是为什么?
答案1
慢查询日志文件必须存在,并且必须可由 mysql 用户写入。在标准 mysql 安装中,我会执行以下操作:
touch /var/log/mysql-slow-queries.log
chown mysql.mysql /var/log/mysql-slow-queries.log
然后重新启动mysql。
如果你将慢日志文件设置在特定目录(即 /var/log/mysql/slow.log)中并且具有足够的权限,MySQL 将自行创建日志文件:
mkdir /var/log/mysql
chown mysql.mysql /var/log/mysql
答案2
您是否启用了慢查询日志?日志是空的还是有效?
通常,慢查询日志是出于性能原因而关闭的,您可以根据需要启用它进行调试。
您可以尝试使用新的 MySQL Workbench。使用 Workbench 中的 MySQL Administrator,您可以在列表中查看工具中所有打开的连接。它对于查看您的连接以及在短时间内管理和监控您的服务器非常有帮助。
另一种方法是采用 MySQL 语句:
显示进程列表;
这将向您显示正在运行的查询,并且您可以看到哪些内容挂起了。
也许我可以帮到你。关于慢查询日志,你可以在 MySQL 网站或这里
答案3
mysqladmin extended-status|head
也可以在这里提供帮助。