MySQL Sleep连接过多问题解决方法

mysql占用服务器cpu过高的原因以及解决办法 mysql占用服务器cpu过高的原因以及解决办法 排查方法 : mysql -uroot -p #登陆数据库 ******** #输入数据库密码 mysql> show processlist; show processlist 命令详解: processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句。 ±... 阅读详情

有时候你在mysql中运行SHOW PROCESSLIST;后会发现数据库中有很多这样的进程:

那么造成sleep的原因,有三个,下面是mysql手册给出的解释:

1.客户端程序在退出之前没有调用mysql_close().[写程序的疏忽,或者数据库的db类库没有自动关闭每次的连接。。。]
2.客户端sleep的时间在wait_timeout或interactive_timeout规定的秒内没有发出任何请求到服务器. [类似常连,类似于不完整的tcp ip协议构造,服务端一直认为客户端仍然存在(有可能客户端已经断掉了)]
3.客户端程序在结束之前向服务器发送了请求还没得到返回结果就结束掉了. [参看:tcp ip协议的三次握手]

解决的方法也很简单

在配置文件中加入

复制代码代码如下:

[mysqld]

wait_timeout=10


或者
复制代码代码如下:

mysql> set global wait_timeout=10;






睡眠连接过多,会对mysql服务器造成什么影响?

严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃。

造成睡眠连接过多的原因?

1. 使用了太多持久连接(个人觉得,在高并发系统中,不适合使用持久连接)

2. 程序中,没有及时关闭mysql连接

3. 数据库查询不够优化,过度耗时。

那么,如果要从根本上解决sleep连接过多,就得从以上三点反复检查,但是见效并不快。

网上有人分享,使用shell脚本配合cron,定期杀死睡眠时间太久的连接,但是这种方法非常不可取,典型的以暴制暴,很可能导致数据崩溃,而且,还需要编写相应shell, 设置cron, 实施成本较繁琐,不推荐使用。

那么更好的办法应该是让mysql自己决定这些睡眠连接的命运,实施会更简单,有效。

mysql的配置文件中,有一项:

wait_timeout, 即可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止,多好的办法!

如设置: 

wait_timeout=100 #即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止,要比编写shell脚本更简单。

那么,对于正在运行中的生产服务器,在不能停止服务情况下,修改此项怎么办?很简单,以root用户登录到mysql,执行:

set global wait_timeout=100

即可。

在我的生产环境中,使用这个办法,取得了相当好的效果。

当然,更根本的方法,还是从以上三点排查之:

1. 程序中,不使用持久链接,即使用mysql_connect而不是mysql_pconnect。

2.   程序执行完毕,应该显式调用mysql_close

3. 只能逐步分析系统的SQL查询,找到查询过慢的SQL,优化之


mysql连接出错:ERROR 1040 (HY000): Too many connections 目录 1.查看mysql的最大连接数 2.查看服务器响应的最大连接数 3.设置最大连接数 4.查看等待时间 5.手动去释放一些没用的连接 1.查看mysql的最大连接数 show variables like '%max_connections%'; 2.查看服务器响应的最大连接数 show global status like 'Max_used_connections'; 3.设置最大连接数 //这种设置,在mysql重启后是失效的 set GLOBAL max_.. 阅读详情

相关推荐

ArcMap投影变换避坑指南:为什么你的坐标转换总出错?常见问题解析与解决方案

本文深入解析ArcMap中坐标转换与投影变换的核心区别与常见陷阱。针对坐标转换总出错的问题,从混淆“定义投影”与“投影变换”、栅格数据重采样选择、矢量数据地理变换参数设置等关键环节,提供清晰的避坑指南与实战解决方案,帮助用户确保空间数据的精确匹配。

weixin_29210727的博客 347

MySQL|数据库|MySQL数据库的Sleep进程过多的处理方式

MySQL数据库是和其它的关系型数据库基本一样,开箱了就能用,但性能方面还需要仔细的配置,最后才能完全的发挥它的性能,也需要相关服务的开发遵循数据库的开发规范,例如,减少大事务,尽量使用短连接,常用查询使用缓存技术,连接池扩展,读写分离,读写负载均衡等等技术,而这些技术通常是根据业务量来选择的,并不是用上就会提升性能,毕竟鞋子合适不合适,只有穿过了才知道。

zsk_john的技术分享专用博客 3695

STM32N6:MCU+NPU架构如何重塑边缘AI部署新范式

STM32N6作为业界首款MCU+NPU架构的通用微控制器,通过集成600 GOPS算力的NPU与800MHz Cortex-M55内核,实现了边缘AI部署的革命性突破。该方案在工业视觉和智能家居等场景中,以超低功耗和成本提供实时AI处理能力,性能较传统MCU提升超100倍,重塑了边缘智能设备的设计范式。

g8f9d0s1a2的博客 1279

mysql中有大量sleep进程的原因与解决办法

mysql配置文件中有:wait_timeout 可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止!对于正在运行中的生产服务器,在不能停止服务情况下,修改此项怎么办。

我的博客 3627

告别Win11睡眠假死:深入解析Modern Standby S0与S3冲突及注册表修复方案

本文深入解析了Windows 11中Modern Standby(S0)与传统睡眠(S3)模式的冲突,该冲突是导致电脑睡眠后出现假死、断网等问题的根源。文章提供了通过修改注册表键值(PlatformAoAcOverride)强制启用稳定S3睡眠的终极修复方案,并附有详细诊断步骤与避坑指南,帮助用户彻底解决睡眠故障。

ol789012的博客 815

保姆级教程:在Windows上用VS2019和OpenCV4.6搞定海康MV-EB435i RGBD相机图像采集

本文提供了一份详细的教程,指导如何在Windows环境下使用VS2019和OpenCV4.6配置海康MV-EB435i RGBD相机进行图像采集。从开发环境准备、SDK部署到代码移植和优化,涵盖了深度图与RGB图同步采集的实战技巧,帮助开发者快速上手工业级RGBD相机的应用开发。

weixin_28675557的博客 464

mysql5.7 大量sleep进程常规处理方式

这里引申一个概念:一般数据库与中间件连接的时候都会通过连接池去管理客户端对数据库发起的连接,在代码里conn.close()方法,在实际意义上只是把这个连接交还给了连接池,和数据库的连接并没有真正断开。在线程启动时,会话wait_timeout值从全局wait_timeout值或从全局interactive_timeout值初始化,这取决于客户端的类型(由mysql_real_connect()的CLIENT_INTERACTIVE connect选项定义)。在配置这两个参数的时候要同时配置保持一致。

weixin_61212661的博客 7009

ChatGPT设置密钥后Codex免手机验证:配置顺序与身份凭证复用机制

API Key 是一种用于身份识别的凭证,其核心原理是通过预配置的密钥替代交互式登录流程。在开发工具中,密钥认证优先级通常高于会话认证,当本地存在有效密钥时,工具会直接复用该凭证,从而减少重复验证环节。这种机制的技术价值在于提升开发效率与配置一致性,尤其适用于多设备切换、CI/CD 流水线及编程辅助工具等场景。以 Codex 为例,在 ChatGPT 界面提前配置 API 密钥后,Codex 启动时可读取持久化存储的密钥,避免触发手机号验证,实现身份凭证的跨入口复用。

weixin_33940469的博客 391

解决MySQL休眠sleep进程过多的问题

现象: 会报错过多连接,拆过最大值(151) 原因: 1.使用了太多持久连接(个人觉得,在高并发系统中,不适合使用持久连接) 2.程序中,没有及时关闭mysql连接 3.数据库查询不够优化,过度耗时。 STP1. 在workbench或者msql命令行工具 输入show full processlist,可以发现很多Sleep的线程ID STEP2: 输出需要kill的任务 SELECT GROUP_CONCAT(CONCAT('kill ',id) SEPARATOR '; ') AS

ericwuhk的专栏 1万+

告别倍福开发板:手把手教你用SSC工具为STM32生成EtherCAT从站代码

本文详细介绍了如何使用SSC工具为STM32生成EtherCAT从站代码,帮助开发者在不依赖倍福开发板的情况下实现高效的工业以太网通信。通过SSC工具的配置、XML文件设计、代码移植与硬件适配等步骤,开发者可以轻松构建自定义的EtherCAT通信系统,提升工业自动化项目的灵活性和效率。

weixin_33925615的博客 402

基于STM32设计的智能防盗单车锁_349

本设计基于STM32F103RCT6单片机,研制了一种适用于户外环境的智能防盗单车锁系统。系统集成了GPS定位模块、ADXL345加速度传感器、4G通信模块(Air780E)、OLED显示屏、继电器模拟锁控模块等硬件,通过姿态感知实现车辆异常移动检测,在锁车状态下自动触发蜂鸣器报警并通过短信与APP通知用户。

854

mysql sleep线程过多的解决办法

如果你没有修改过MySQL的配置,缺省情况下,wait_timeout的初始值是28800。 wait_timeout 过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题,通常来说,我觉得把wait_timeout设置为10是个不错的选择,但某些情况下可能也会出问题,比如说有一个CRON脚本,其中两次SQL查询的间隔时间大于10秒的话,那么这个设置就有问题了(当然,这也不是不

woqjysqjy的专栏 1512

【proteus】模拟串口和物理串口通讯

proteus提供了两种串口,一种是模拟的串口,还有一张是用软件仿真到硬件的物理串口。他们的区别就是:模拟串口只能在proteus内部进行通讯,但是物理可以通过软件映射到硬件上和单机或者串口软件通讯。 物理串口在元器件搜索COMPIM即可找到。 模拟串口在这里: PROTEUS仿真图: 物理串口COMPIM的设置: 模拟串口的设置: VSPD是一款虚拟串口软件,VSPD下载链接: 链接:https://pan.baidu.com/s/1AZygJCeWZfQTnxdCb_3TPg 提取码:12pm

阿蛋的博客 8927

清理mysql的sleep链接_MySQL Sleep连接过多问题解决方法

MySQL Sleep连接过多问题解决方法有时候你在mysql中运行SHOW PROCESSLIST;后会发现数据库中有很多这样的进程:那么造成sleep的原因,有三个,下面是mysql手册给出的解释:1.客户端程序在退出之前没有调用mysql_close().[写程序的疏忽,或者数据库的db类库没有自动关闭每次的连接。。。]2.客户端sleep的时间在wait_timeout或interacti...

weixin_35857225的博客 1195

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql command为sleep时项目可以连接_Mysql中Sleep进程连接数过多问题解决

连接数查看进入MySQL命令行,输入“show processlist;”命令后,Command列出现一大堆Sleep睡眠状态的连接进程。如下图:mysql连接进程Sleep睡眠状态过多将影响MySQL系统资源,主要是CPU、内存。超过配置的最大连接数,新的客户端连接将无法连接,mysql将无法提供服务,Web系统无法访问、崩塌。造成连接数过多原因1)、常见是程序中没有关闭DB连接,客户端在退出前...

weixin_35000379的博客 4127

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql 线程等待时间,解决sleep进程过多的办法 【转】

文章出处:mysql 线程等待时间,解决sleep进程过多的办法 如果你没有修改过MySQL的配置,缺省情况下,wait_timeout的初始值是28800。 wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQLhas goneaway”之类的问题,通常

踏歌行的专栏 3017

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysql运维-sleep线程过多_MySQL sleep过多解决方法

wait_timeout=100 #即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止。那么,对于正在运行中的生产服务器,在不能停止服务情况下,修改此项怎么办?wait_timeout, 即可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止,多好的办法!1.在PHP程序中,不使用持久链接,即使用mysql_connect而不是pconnect。那么,如果要从根本上解决sleep连接过多,就得从以上三点反复检查,但是见效并不快。

m0_73263473的博客 815

MySQL报错ERROR 1040 Can not connect to MySQL server. Too many connections

MySQL连接数默认是151,在开发过程中出现过多的连接处于sleep状态未被释放,超过了默认的最大连接数,然后报错连接数过多。如果完全连不上,那就停掉占用连接的应用,停了还是连不上就重启MySQL。如果连的上那就可以使用下面的SQL来操作。下面这些手段都是在数据库本身做限制,真正要解决这个问题还是要排查出产生这么多sleep连接的原因,可能是数据库连接池参数设置的不合理、跑的应用程序过多负载太大等等原因。...

qq_40507015的博客 1849

apache php 分离mysql_apachephpmysqlPHP实现清除MySQL死连接的方法

本文实例讲述了PHP实现清除MySQL死连接的方法。分享给大家供大家参考,具体如下:连接的情况,主要表现为有过多的Sleep连接,并且Time时间很长,占满了所有的可用连接数,以至于其它用户无法再连接数据库。我开始考虑调节MySQL数据库参数,但是改了许多参数仍然没有解决这个问题。于是想了一个比较狠的办法,写一个php脚本,每2分钟执行一次,发现死连接(超过120秒)就Kill掉,这样再也不会让某...

weixin_42415498的博客 106

PAIP.MYSQL SLEEP 连接太多解决

PAIP.MYSQL SLEEP 连接太多解决 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax ////////服务器端方法. -----------------设置mysql自动断开.sleep连接.. MySQL中的配置参数interactive_timeo...

weixin_33939380的博客 108

php show processlist,学会用 Mysql show processlist 排查问题

学会用 Mysql show processlist 排查问题青春阳光king 码农编程进阶笔记mysql show full processlist 查看当前线程处理情况事发现场每次执行看到的结果应该都有变化,因为是实时的,所以我定义为:“事发现场”,每次执行就相当于现场的快照一般用到 show processlist 或 show full processlist 都是为了查看当前 mysq...

weixin_36179933的博客 211

mysql进程很多空的sleep_Mysql中Sleep进程连接数过多问题解决

连接数查看进入MySQL命令行,输入“show processlist;”命令后,Command列出现一大堆Sleep睡眠状态的连接进程。如下图:mysql连接进程Sleep睡眠状态过多将影响MySQL系统资源,主要是CPU、内存。超过配置的最大连接数,新的客户端连接将无法连接,mysql将无法提供服务,Web系统无法访问、崩塌。造成连接数过多原因1)、常见是程序中没有关闭DB连接,客户端在退出前...

weixin_42620340的博客 2158

清理mysql的sleep链接_MySQL中sleep连接过多的问题解决

在MySQL中运行SHOW PROCESSLIST;,现数据库中有很多这样的进程:上图可以看出,bim用户发起了274个连接,都是sleep状态。MySQL中Sleep连接过多,那么造成sleep的原因,有三个,下面是mysql手册给出的解释:1)客户端程序在退出之前没有调用mysql_close()。[写程序的疏忽,或者数据库的db类库没有自动关闭每次的连接]2)客户端sleep的时间在wait...

weixin_39968852的博客 564

mysql sleep状态连接过多解决办法

mysql sleep状态连接过多解决办法mysql sleep状态连接过多产生的问题查看连接状态解决办法 mysql sleep状态连接过多产生的问题 最大连接数 网络问题 mysql服务器资源问题 查看连接状态 show processlist; 解决办法 show variables like '%timeout%' interactive_timeout和wait_timeout 值表示最大sleep 时长,默认为8个小时。 把这两个属性配置到mysql配置文件中即可 [mysqld]

gusijin的博客 1482
上一篇: mysql交互式连接&非交互式连接
下一篇: Disable Drupal 8 caching during development
木子耗2009
博客等级 码龄13年 68粉丝 454原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值