`
月影无痕
  • 浏览: 1008576 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql sleep连接过多的完美解决办法

阅读更多

睡眠连接过多,会对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,优化之

分享到:
评论
1 楼 化蝶自在飞 2010-10-20  
敢问是phpcms的zhangxu吗?

相关推荐

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

    主要介绍了MySQL Sleep连接过多问题解决方法,MySQL Sleep连接过多一般多为客户端没关闭连接导致的,解决方法很简单,修改一下配置文件即可,需要的朋友可以参考下

    多线程下mysql连接数过多解决demo

    以下是一些解决多线程下MySQL连接数过多问题的方法和策略: 1. **连接池管理**: 使用连接池(如C3P0、HikariCP、Druid等)是解决这个问题的关键。连接池能够复用已建立的数据库连接,避免频繁地创建和销毁连接,...

    解决mysql数据库连接过多的错误

    总之,解决“MySQL数据库连接过多的错误”涉及监控连接状态、调整配置参数、优化连接管理和代码审查。通过以上方法,可以有效提高数据库系统的并发能力,确保其稳定运行,避免因连接数过多而导致的服务中断。在日常...

    MyEclipse连接MySQL数据库报错解决办法

    我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助。 一般MySQL连接不上,可能有两大...

    VS2013添加MySQL连接完美解决方案

    "VS2013添加MySQL连接完美解决方案"这个标题所指的就是解决这个问题的一种方法。 标题中的“完美解决方案”通常意味着一种全面且可靠的处理方式,能够确保用户在VS2013中顺利地与MySQL数据库进行交互。在这个案例中...

    MySQL连接的相关问题及解决办法

    ### MySQL连接的相关问题及解决办法 #### 一、MySQL服务启动问题及解决方法 在Windows环境中,MySQL服务可能会出现无法启动的问题,表现为无法连接数据库、无法停止或重启MySQL服务,即使重启计算机也无法解决。...

    完美解决Delphi连接mysql数据库

    然而,将Delphi与MySQL集成可能会遇到一些挑战,但只要掌握了正确的方法,这些问题都可以得到完美的解决。 首先,我们需要了解如何在Delphi中添加对MySQL的支持。这通常通过使用第三方组件库完成,如ZeosLib或...

    c# mysql数据库连接池实现

    `Pomelo`是社区维护的MySQL Entity Framework Core提供者,而`MySql.Data`则是官方提供的非Entity Framework解决方案。 2. 配置连接字符串 在应用程序配置文件(如appsettings.json)中,配置MySQL数据库的连接...

    如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。非常急人,有没有办法可以解决局域网内mysql数据库连接慢呢?下面小编带领大家来解决此问题,感兴趣的朋友一起看看吧

    mysql连接的空闲时间超过8小时后 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远程连接的时候报错mysql 1130的解决方法.pdf

    Navicat for MySQL 远程连接错误 1130 解决方法 Navicat for MySQL 是一款功能强大的数据库管理工具,但是在远程连接 MySQL 服务器时,可能会遇到错误 1130,这是因为 MySQL 服务器不允许从远程主机连接。下面我们...

    mybatis连接MySQL8出现的问题解决方法

    "mybatis连接MySQL8出现的问题解决方法" MyBatis是当前最流行的持久层框架之一,它提供了一个简单的方式来访问数据库。然而,在使用MyBatis连接MySQL8时,可能会出现一些问题。本文将介绍MyBatis连接MySQL8出现的...

    自己总结 mysql服务器连接不成功之解决方法

    【MySQL服务器连接不成功之解决方法】 在使用MySQL数据库时,有时可能会遇到无法连接到服务器的问题,这可能是由于多种原因导致的。以下是一些常见的错误及其解决方案。 一、错误1067:进程意外终止 当MySQL...

    MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)

    远程连接mysql是总是提示: 代码如下:Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 很明显这是连接初始化阶段就丢失了连接的错误。 google半天大多是说的注释掉...

    IDEA连接不上MySQL端口号占用的解决

    命令行下能正常登陆MYSQL,navicat能正常连接MySQL,但是IDEA连接不上MySQL,emmm,什么情况。。。 看了一下错误提示: ...然后去IDEA连接MySQL 发现 人生处处是惊喜 竟然successful。 但是,也存在

    Navicat出现无法远程连接MySql服务器问题的解决办法

    Navicat无法远程连接MySql服务器问题的解决方法写在前面: 操作系统:中标麒麟4.0; 数据库:MySQL5.7.26; JDK:采用中标麒麟系统自带的openjdk; 客户端工具:Navicat; 前置条件: MySQL服务安装完毕; 情景: ...

    Qt Mysql超时断开后自动重连完美解决方法

    网上找了很多解决办法,几乎没有一个能完美解决问题的,大体都是首先执行一段query后看返回结果,但这个办法也太无用和耗费资源了吧...因为断开后isOpen和isValid都会返回true,所以不能从这里入手...

    nodejs 关于mysql模块 连接超时自动断开解决方法

    nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分

Global site tag (gtag.js) - Google Analytics