Php MySQL性能慢&;睡眠查询

Php MySQL性能慢&;睡眠查询,php,mysql,sql,database,codeigniter,Php,Mysql,Sql,Database,Codeigniter,最近,我注意到在一天的早些时候,我的网站上加载AJAX数据的速度非常慢。使用Chrome浏览器中的Web Developer功能,通常300-500毫秒的等待和100-300毫秒的接收速度可以增加到5秒!该站点使用jQuery、Codeigniter/PHP和MySQL 我向我的副总裁的支持台询问,他们提到有太多的睡眠问题 There are many sleep queries for the database 'databasename'. | 4341 | mysqluser | 204

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

我向我的副总裁的支持台询问,他们提到有太多的睡眠问题

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 | | |
这是早上慢下来的原因吗?我怎样才能找出导致经济放缓的原因并加以消除

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

  • 要诊断查询速度慢的问题,您需要获取。如果关闭了慢速查询日志记录,请立即将其打开

  • 一旦有了一个合适的日志文件,就需要使用分析运行缓慢的查询。Explain将允许查看Mysql的查询计划器和分析器如何执行您的查询

  • 还将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)
    

    可能意味着用户正在使用持久连接,这可能是一件坏事。