繁体   English   中英

慢的MySQL性能和睡眠查询

[英]Slow MySQL Performance & Sleep queries

最近,我注意到在凌晨时分,我网站上的AJAX数据加载非常缓慢。 使用Chrome浏览器中的Web Developer功能,通常300-500ms等待和100-300ms接收的速度最多可以增加5秒! 该网站使用jQuery,Codeigniter / PHP和MySQL。

我向我的VPS的支持台咨询了一下,他们提到有太多睡眠查询。

There are many sleep queries for the database 'databasename'.

| 4341 | mysqluser | 204.197.252.106:48669 | databasename | Sleep | 19 | | |
| 4373 | mysqluser | 204.197.252.106:59966 | databasename | Sleep | 78 | | |
| 4387 | mysqluser | 204.197.252.106:34807 | databasename | Sleep | 46 | | |
| 4388 | mysqluser | 204.197.252.106:35099 | databasename | Sleep | 6 | | |
| 4390 | mysqluser | 204.197.252.106:35452 | databasename | Sleep | 26 | | |
| 4391 | mysqluser | 204.197.252.106:35589 | databasename | Sleep | 7 | | |
| 4392 | mysqluser | 204.197.252.106:35680 | databasename | Sleep | 19 | | |
| 4393 | mysqluser | 204.197.252.106:36264 | databasename | Sleep | 12 | | |
| 4394 | mysqluser | 204.197.252.106:36327 | databasename | Sleep | 11 | | |

这是早上速度下降的原因吗? 我如何找出导致减速的原因并消除它?

  1. 这些睡眠查询只是开放的连接。 除非他们成百上千,否则我不会为他们打扰。 他们很可能正在形成您的框架/ ORM正在使用的连接池。

  2. 要诊断慢查询问题,您需要获取慢查询日志 如果慢查询日志已关闭,请立即将其打开。

  3. 一旦你有一个合适的日志文件,你要分析与运行较慢的查询解释 解释将允许查看Mysql的查询计划器和分析器如何执行查询。

  4. 还要在此处运行最慢的查询上粘贴explain的输出以及表模式,以便我们更好地诊断您的问题。

如果要终止睡眠连接,可以执行以下操作:以管理员身份登录Mysql:

 mysql -uroot -ppassword;

并且比运行命令:

mysql> show processlist;

您将获得以下内容:

+----+-------------+--------------------+----------+---------+------+-------+------------------+
| Id | User        | Host               | db       | Command | Time | State | Info             |
+----+-------------+--------------------+----------+---------+------+-------+------------------+
| 49 | application | 192.168.44.1:51718 | XXXXXXXX | Sleep   |  183 |       | NULL             ||
| 55 | application | 192.168.44.1:51769 | XXXXXXXX | Sleep   |  148 |       | NULL             |
| 56 | application | 192.168.44.1:51770 | XXXXXXXX | Sleep   |  148 |       | NULL             |
| 57 | application | 192.168.44.1:51771 | XXXXXXXX | Sleep   |  148 |       | NULL             |
| 58 | application | 192.168.44.1:51968 | XXXXXXXX | Sleep   |   11 |       | NULL             |
| 59 | root        | localhost          | NULL     | Query   |    0 | NULL  | show processlist |
+----+-------------+--------------------+----------+---------+------+-------+------------------+

您将看到不同连接的完整详细信息。 现在,您可以按以下方式终止睡眠连接:

mysql> kill 52;
Query OK, 0 rows affected (0.00 sec)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM