睡眠连接过多,会对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而不是pconnect。
2. 程序执行完毕,应该显式调用mysql_close
3. 只能逐步分析系统的SQL查询,找到查询过慢的SQL,优化之
分享到:
相关推荐
主要介绍了MySQL Sleep连接过多问题解决方法,MySQL Sleep连接过多一般多为客户端没关闭连接导致的,解决方法很简单,修改一下配置文件即可,需要的朋友可以参考下
以下是一些解决多线程下MySQL连接数过多问题的方法和策略: 1. **连接池管理**: 使用连接池(如C3P0、HikariCP、Druid等)是解决这个问题的关键。连接池能够复用已建立的数据库连接,避免频繁地创建和销毁连接,...
总之,解决“MySQL数据库连接过多的错误”涉及监控连接状态、调整配置参数、优化连接管理和代码审查。通过以上方法,可以有效提高数据库系统的并发能力,确保其稳定运行,避免因连接数过多而导致的服务中断。在日常...
我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助。 一般MySQL连接不上,可能有两大...
然而,将Delphi与MySQL集成可能会遇到一些挑战,但只要掌握了正确的方法,这些问题都可以得到完美的解决。 首先,我们需要了解如何在Delphi中添加对MySQL的支持。这通常通过使用第三方组件库完成,如ZeosLib或...
`Pomelo`是社区维护的MySQL Entity Framework Core提供者,而`MySql.Data`则是官方提供的非Entity Framework解决方案。 2. 配置连接字符串 在应用程序配置文件(如appsettings.json)中,配置MySQL数据库的连接...
通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。非常急人,有没有办法可以解决局域网内mysql数据库连接慢呢?下面小编带领大家来解决此问题,感兴趣的朋友一起看看吧
解决这个问题的办法有三种: 1. 增加 MySQL 的 wait_timeout 属性的值。 修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait 8hours in idle status. wait_timeout =86400 相关参数,...
Navicat for MySQL 远程连接错误 1130 解决方法 Navicat for MySQL 是一款功能强大的数据库管理工具,但是在远程连接 MySQL 服务器时,可能会遇到错误 1130,这是因为 MySQL 服务器不允许从远程主机连接。下面我们...
"mybatis连接MySQL8出现的问题解决方法" MyBatis是当前最流行的持久层框架之一,它提供了一个简单的方式来访问数据库。然而,在使用MyBatis连接MySQL8时,可能会出现一些问题。本文将介绍MyBatis连接MySQL8出现的...
【MySQL服务器连接不成功之解决方法】 在使用MySQL数据库时,有时可能会遇到无法连接到服务器的问题,这可能是由于多种原因导致的。以下是一些常见的错误及其解决方案。 一、错误1067:进程意外终止 当MySQL...
远程连接mysql是总是提示: 代码如下:Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 很明显这是连接初始化阶段就丢失了连接的错误。 google半天大多是说的注释掉...
- MySQL远程连接丢失问题解决方法(Lost connection to MySQL server) - 配置mysql允许远程连接的方法 - MySQL远程连接不上的解决方法 - PHP中使用localhost连接Mysql不成功的解决方法 - 解决MySQL无法远程连接的...
命令行下能正常登陆MYSQL,navicat能正常连接MySQL,但是IDEA连接不上MySQL,emmm,什么情况。。。 看了一下错误提示: ...然后去IDEA连接MySQL 发现 人生处处是惊喜 竟然successful。 但是,也存在
Navicat无法远程连接MySql服务器问题的解决方法写在前面: 操作系统:中标麒麟4.0; 数据库:MySQL5.7.26; JDK:采用中标麒麟系统自带的openjdk; 客户端工具:Navicat; 前置条件: MySQL服务安装完毕; 情景: ...
nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分
Durid 连接 Mycat+MySQL 过程中报 1243 错误的解决办法 在本篇文章中,我们将讨论 Durid 连接 Mycat+MySQL 过程中报 1243 错误的解决办法。该错误信息是“ERROR ...
本教程将详细讲解如何使用Delphi通过SQLConnection控件实现对远程MySQL数据库的完美连接。 首先,我们需要了解SQLConnection控件。这是Delphi集成开发环境中(IDE)提供的一个标准组件,它允许开发者与各种数据库...