MySQL sleep进程连接过多卡住了问题解决办法

MySQL sleep进程连接过多原因分析

当php的页面执行结束时,会自动释放掉一切。相信很多人都跟我想的一样。但事实证明并不是这样。比如session就不会随着页面执行完毕而释放。

php的垃圾回收机制,其实只针对于php本身。对于mysql,php没权利去自动去释放它的东西。如果你在页面执行完毕前不调用mysql_close(),那么mysql那边是不会关闭这个连接的。如果你是用的是pconnect方式,即使你在页面执行完毕前调用mysql_close(),也无法另mysql关闭这个连接

mysql中睡眠连接会对mysql服务器造成影响

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

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

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

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

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

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

在mysql的配置文件中设置自动关闭链接时间过长的进程:

修改mysql的配置文件my.cnf , window系统中是my.ini

[mysqld]
......
wait_timeout=100
interactive_timeout=100

wait_timeout=100 #即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止。

设置好后重启mysql

service mysqldrestart

修改mysql占用内存的参数如下:

table_open_cache=2000 改为

table_open_cache=256
table_definition_cache=1400 改为

table_definition_cache=400

时间: 2024-08-20 00:49:59

MySQL sleep进程连接过多卡住了问题解决办法的相关文章

解决MySQL中Sleep连接过多的问题

在mysql中运行SHOW PROCESSLIST;,现数据库中有很多这样的进程: 其实就是MySQL中Sleep连接过多,那么造成sleep的原因,有三个,下面是mysql手册给出的解释: 1.客户端程序在退出之前没有调用mysql_close().[写程序的疏忽,或者数据库的db类库没有自动关闭每次的连接...]2.客户端sleep的时间在wait_timeout或interactive_timeout规定的秒内没有发出任何请求到服务器. [类似常连,类似于不完整的tcp ip协议构造,服务

MySQL中Sleep连接过多的问题解决办法

有时候你在mysql中运行SHOW PROCESSLIST;后会发现数据库中有很多这样的进程: 那么造成sleep的原因,有三个,下面是mysql手册给出的解释: 1.客户端程序在退出之前没有调用mysql_close().[写程序的疏忽,或者数据库的db类库没有自动关闭每次的连接...] 2.客户端sleep的时间在wait_timeout或interactive_timeout规定的秒内没有发出任何请求到服务器. [类似常连,类似于不完整的tcp ip协议构造,服务端一直认为客户端仍然存在(

mysql与apache消耗大量CPU的问题解决办法

重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用.盯了有好十几分钟,主要消耗 CPU 的进程有两个,一个是 mysql,另一个是 apache.下面的图可以看到,mysql 占用了很大部分的 CPU 使用.apache 单个进程虽然占得不多,但有不少个 apache 进程同时存在,也消耗了不少 CPU 的使用. 当然,这些不足以让服务器的 CPU 直接跑满挂掉,后来发现了两个大家伙: 当 mysql 的 CPU 消耗降下来之后,出现了两个奇怪的进程:kswapd0 和 e

mysql中CONCAT值为空的问题解决办法

天在做opencart开发的时候,需要对用户表中用户的电话号码和区号连接起来,于是使用了concat方法,  代码如下 复制代码 SELECT CONCAT(isdcode,telephone) FROM gb_customer 竟然发现很多NULL列,telephone明明是有值的,于是查询了相关concat方法, 解释如下  代码如下 复制代码 mysql CONCAT(str1,str2,-)   返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL.或许有一

Win8宽带连接不能保存密码问题解决办法

  Windows8宽带自动链接拨号时每次都要输入密码,让人非常的不爽,怎么办呢? 方法如下: 1.建立文本 2.输入:RASDIAL 宽带连接 用户名 密码 3.保持为 bat 格式:"宽带连接.BAT" 即可 点击宽带连接.BAT 就可以自动拨号了,方法处理 windows slate 系统外,其他的Win7.XP 也可以使用同样方法.

mysql字符集导致恢复数据库报错问题解决办法

恢复数据库报错:由于字符集问题,最原始的数据库默认编码是latin1,新备份的数据库的编码是utf8,因此导致恢复错误. [root@hk byrd]# /usr/local/mysql/bin/mysql -uroot -p'admin' t4x < /tmp/11x-B-2014-06-18.sql ERROR 1064 (42000) at line 292: You have an error in your SQL syntax; check the manual that corre

mysql导入数据提示 USING BTREE错误问题解决办法

最近使用mysql导入sql脚本时间出现错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 查找 USING BTREE mysql,你会看到很多这样的例子,mysql 5.

佳能600D相机连接电脑无法识别问题解决办法

给各位摄影爱好者们来详细的解析分享一下佳能600D相机连接电脑无法识别问题的解决办法. 解析分享: 是不是没有安装佳能随机携带的光盘,直接插入用相机连接电脑是不能直接识别的.需要用软件导入照片才可以.查一下电脑是不是没有安装佳能的图片编辑软件,要是没有就直接安装一个就可以了. 可以试着安装一下那个软件,然后再连接相机试试.就相当于一个相机的驱动,只有这个驱动才能认出相机来.否则是认不出来的.     好了,以上的信息就是小编给各位摄影爱好者们带来的详细的佳能600D相机连接电脑无法识别问题的解决

怎样解决mysql连接过多的错误

问:怎样解决mysql连接过多的错误? 答:系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是可以设置的.如果不设置,默认是100.最大是16384. 2.数据库当前的连接线程数threads_connected.这是动态变化的. 查看max_connections.max_connections的办法见后. 如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时