首页 > 解决方案 > 睡眠进程过多(MySQL)

问题描述

我在高峰时段遇到一个问题,我得到“建立数据库连接时出错”。在日志中,它是“连接太多”。如果不先重新启动 mysql,我无法手动连接到数据库。

我检查了数据库中发生的事情,看起来它主要是睡眠进程。我不知道为什么。

在服务器上,我运行 10 多个带有各种主题和插件的 Wordpress 站点(全部通过https://spinupwp.com/)。我现在做的是运行MySQLTuner-perl并实施它的建议,因为 MySQL 处于默认设置中。我正在等待高峰时间,这不是我认为的最聪明的时间。

你能推荐我一种方法来识别哪个 PHP 文件或 http 请求对此负责吗?

mysql> show processlist;
+-------+-------+-----------+-----------------------+---------+------+----------+------------------+
| Id    | User  | Host      | db                    | Command | Time | State    | Info             |
+-------+-------+-----------+-----------------------+---------+------+----------+------------------+
|   423 | dbuser | localhost | NULL                  | Query   |    0 | starting | show processlist |
|   448 | dbuser | localhost | my_dbname_wp | Sleep   |  242 |          | NULL             |
|   452 | dbuser | localhost | my_dbname_wp | Sleep   |  242 |          | NULL             |
|   455 | dbuser | localhost | my_dbname_wp | Sleep   |  241 |          | NULL             |
|   936 | dbuser | localhost | my_dbname_wp | Sleep   |  217 |          | NULL             |
|  5715 | dbuser | localhost | my_dbname_wp | Sleep   |  164 |          | NULL             |
|  8669 | dbuser | localhost | my_dbname_wp | Sleep   |  139 |          | NULL             |
| 10353 | dbuser | localhost | my_dbname_wp | Sleep   |  125 |          | NULL             |
| 10631 | dbuser | localhost | my_dbname_wp | Sleep   |  123 |          | NULL             |
| 10724 | dbuser | localhost | my_dbname_wp | Sleep   |  122 |          | NULL             |
| 10867 | dbuser | localhost | my_dbname_wp | Sleep   |  121 |          | NULL             |
| 11084 | dbuser | localhost | my_dbname_wp | Sleep   |  119 |          | NULL             |
| 11102 | dbuser | localhost | my_dbname_wp | Sleep   |  119 |          | NULL             |
| 11226 | dbuser | localhost | my_dbname_wp | Sleep   |  118 |          | NULL             |
| 11669 | dbuser | localhost | my_dbname_wp | Sleep   |  114 |          | NULL             |
| 11726 | dbuser | localhost | my_dbname_wp | Sleep   |  114 |          | NULL             |
| 11851 | dbuser | localhost | my_dbname_wp | Sleep   |  113 |          | NULL             |
| 11994 | dbuser | localhost | my_dbname_wp | Sleep   |  112 |          | NULL             |
| 12006 | dbuser | localhost | my_dbname_wp | Sleep   |  112 |          | NULL   

标签: phpmysqlnginxdevops

解决方案


似乎是这个插件 - https://wordpress.org/plugins/disable-json-api/。它阻止了一些闲置的 /wp-admin/admin-ajax.php 请求。禁用插件不是一个正确的解决方案,但它有所帮助。


推荐阅读