签到成功

知道了

CNDBA社区CNDBA社区

Mysql sleep线程过多解决方案

2021-11-28 09:31 2144 0 原创 mysql
作者: hbhe0316

一.sleep连接过多,会对mysql服务器造成什么影响?
严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃。

二.造成睡眠连接过多的原因?
1.使用了太多持久连接(在高并发系统中,不适合使用持久连接)
2.程序中,没有及时关闭JDBC连接
3.数据库查询不够优化,过度耗时。http://www.cndba.cn/hbhe0316/article/22634

三.在Mysql层面,注意受如下两个参数控制:interactive_timeout和wait_timeout,详见:
https://www.cndba.cn/hbhe0316/article/22633http://www.cndba.cn/hbhe0316/article/22634

http://www.cndba.cn/hbhe0316/article/22634
http://www.cndba.cn/hbhe0316/article/22634
http://www.cndba.cn/hbhe0316/article/22634

四.如下查看sleep线程

mysql> show processlist;
+----+------+---------------------+--------+---------+------+--------------+-------------------------+
| Id | User | Host                | db     | Command | Time | State        | Info                    |
+----+------+---------------------+--------+---------+------+--------------+-------------------------+
|  3 | root | localhost           | mysql  | Query   |    0 | starting     | show processlist        |
|  5 | root | 192.168.56.88:43384 | testdb | Query   |    4 | Sending data | select count(*) from t1 |
+----+------+---------------------+--------+---------+------+--------------+-------------------------+
2 rows in set (0.00 sec)

mysql> show processlist;
+----+------+---------------------+--------+---------+------+----------+------------------+
| Id | User | Host                | db     | Command | Time | State    | Info             |
+----+------+---------------------+--------+---------+------+----------+------------------+
|  3 | root | localhost           | mysql  | Query   |    0 | starting | show processlist |
|  5 | root | 192.168.56.88:43384 | testdb | Sleep   |   23 |          | NULL             |
+----+------+---------------------+--------+---------+------+----------+------------------+
2 rows in set (0.00 sec)

如上所示:当线程处于sleep的时候,Command列会显示Sleep关键字,由于设置了interactive_timeout和wait_timeout为300,那么300S后,原理的3和5的线程被kill。

http://www.cndba.cn/hbhe0316/article/22634

mysql> show processlist;
+----+------+-----------+-------+---------+------+----------+------------------+
| Id | User | Host      | db    | Command | Time | State    | Info             |
+----+------+-----------+-------+---------+------+----------+------------------+
|  6 | root | localhost | mysql | Query   |    0 | starting | show processlist |
+----+------+-----------+-------+---------+------+----------+------------------+
1 row in set (0.00 sec)

五.如何手动kill线程http://www.cndba.cn/hbhe0316/article/22634

http://www.cndba.cn/hbhe0316/article/22634
http://www.cndba.cn/hbhe0316/article/22634http://www.cndba.cn/hbhe0316/article/22634

mysql> show processlist;
+----+------+---------------------+--------+---------+------+--------------+-------------------------+
| Id | User | Host                | db     | Command | Time | State        | Info                    |
+----+------+---------------------+--------+---------+------+--------------+-------------------------+
|  7 | root | 192.168.56.88:43386 | testdb | Query   |    3 | Sending data | select count(*) from t1 |
|  8 | root | localhost           | mysql  | Query   |    0 | starting     | show processlist        |
+----+------+---------------------+--------+---------+------+--------------+-------------------------+
2 rows in set (0.01 sec)

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

MYSQL

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:2647631次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ