DONGCHAO

Good Luck To You!

Message: mysqli::real_connect(): (08004/1040): Too many connections 解决

重启服务(紧急情况下看可否恢复服务),然后再排除故障原因

看线上进程,看运行SQL,看运行最久的,看SQL状态。

问题排查步骤如下 ↓


方向1:有人建议:max_connections 这个值可以先改大一点临时解决一下问题先 。


方向2:执行 show processlist命令


    注解:show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,

    看不到其它用户正在运行的线程。除非单独个这个用户赋予了PROCESS 权限。


方向3:执行show variables like ‘%timeout%’命令


    查看超时,或锁死情况。


方向4:执行show engine innodb status命令


    那show engine innodb status 展示了多少信息,这些信息对系统的状态。


    看是否存在,connect数一直在增,buffer缓冲池已经占用完的情况。


    再次执行 show processlist 查看当前的SQL进程,认真分析罪魁祸首,SQLs是否在一直在执行


关键步骤:

主要执行 show processlist,看到所有操作表的线程

发现 state状态为 tmp table,这是因为临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存


解决方案:


暂时停掉该SQL的业务,紧急优化sql。


  • 评论列表

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年1月    »
1234567
891011121314
15161718192021
22232425262728
293031
网站分类
搜索
最新留言
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.7.2

© 2023 DONGCHAO.ORG.CN All Rights Reserved. 版权所有:豫ICP备2023000417号-1