有时我的网站会因为 Mysql 消耗所有资源而“瘫痪”,但我认为它不会停止创建更多 httpd 进程。这可能吗?如果我重新启动 apache,这些进程就会消失,我可以看到 mysql 进程的 CPU 消耗慢慢下降,然后网站又上线了。
无论如何,我都很难找到瓶颈。该网站有很多 cronjobs(php 脚本),每个脚本都会生成日志,其中包括总执行时间。
所以我的第一个想法是尝试找到花费大量时间的脚本,但这是不可能的,因为只要其中一个脚本减慢了 mysql 服务器的速度,所有脚本的执行时间就会增加。
有什么建议吗?
在哪里可以了解如何找到瓶颈?
注意:我使用的是 CentOS、apache 2、php 5.3 和 mysql 5
答案1
您应该从慢查询日志开始:http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
您可能还想检查 max_used_connections 是否高于 max_connections:
SHOW VARIABLES LIKE 'max\_connections';
SHOW STATUS LIKE 'max\_used\_connections';