一个 Web 服务器(Apache + MySQL)严重锁定,我不得不关闭电源,然后立即登录查看之后发生了什么。平均负载超过 3%,MySQL 的 CPU 占用率在 20% 到 80% 之间。出于好奇,我在活动高峰期间运行了 SHOW PROCESSLIST;,结果发现...
+-------+--------+-----------+--------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+--------+-----------+--------+---------+------+-------+------------------+
| 10762 | root | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST |
| 11754 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11755 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11756 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11758 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11759 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11761 | elba | localhost | elba | Sleep | 0 | | NULL |
| 11763 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11764 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11765 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11766 | phorum | localhost | phorum | Sleep | 0 | | NULL |
| 11767 | phorum | localhost | phorum | Sleep | 0 | | NULL
只是为了好玩,我启用了慢查询日志,但那里什么也没有。此后,平均负载(以及 MySQL 的资源使用率)已回落至正常水平,但仍不清楚发生了什么。
对发生的事情有什么见解吗?如果做不到这一点,我应该记录什么来帮助下次彻底查明真相?
答案1
只是为了好玩,我启用了慢查询日志,但那里什么也没有。
您是否已启用log-queries-not-using-indexes
选项?
我还建议您设置long_query_time
归零,然后安装Percona 工具包并运行:
pt-query-digest /path/to/the/slow/log | tee $HOME/mysql-slow_`date +%F`.profile
看看会发生什么。