第一部分为产生大量sleep进程的原理及对应解决方法

第二部分为设置wait_timeout值,有效减少sleep进程

==========================================

第一部分开始

1、通常来说,MySQL出现大量Sleep进程是因为采用的PHP的MySQL长链接数据库方式,即使用了mysql_pconnect来打开链接数据库,解决办法就是使用“短”链接,即mysql_connect函数。

2、在使用mysql_connect短链接方式打开数据库,每个页面在打开数据库后,执行SQL完成,当页面脚本结束的时候,这个MySQL连接会自动关闭并且释放内存。但仍然出现大量Sleep进程,可以看看网站是否存在以下几个方面的问题。

A,硬盘上存在大量的静态文件,或者WEB服务器负荷太重,在处理HTTP请求响应变得太慢,这样也有可能导致出现大量Sleep进程,解决方法适当调整WEB服务参数和文件,一味的静态或者缓存化网页内容并不是灵丹妙药。

B,在网页脚本中,有些计算和应用可能非常耗时,比如在0秒的时候打开数据库执行完一段SQL代码后,网页脚本随即花了20秒钟进行一段复杂的运算,或者是require了一个庞大的PHP文件(比如含有几千个违规关键字的过滤函数),哪么这个时候在MySQL后台看到的进程中,这个20秒的过程MySQL并没有做任何事情了,一直处于Sleep状态,直到这个页面执行完毕或者达到wait_timeout值(被强行关闭),优化网页脚本,尽量让程序快速运行,或者在执行这段耗时的运行过程中,执行mysql_close把当前MySQL链接强行关闭。

C,在采集站中,MySQL中大量的Sleep进程这类现象尤其明显(比如很多网友问道DeDeCMS的MySQL中出现大量Sleep),因为大部的采集器页面在运行过程中,事先打开了一个MySQL链接(可能是为了验证用户权限等),然后开始使用file_get_contents之类的操作去获取一个远程的网页内容,如果这个远程的站点访问速度太慢,比如花了10秒时间才把网页取回,哪么当前采集脚本程序就一直阻塞在这里,并且MySQL啥事也没干,一直处于Sleep状态。解决方法同上,在发出file_get_contents采集远程网页的时候,使用mysql_close强行关闭MySQL的连接,等采集完成在适当需要的时候再重新mysql_connect即可。

==========================================

第二部分开始

设置wait_timeout的值,有效减少sleep进程

如果你没有修改过MySQL的配置,缺省情况下,wait_timeout的初始值是28800。

wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个值设置的过小,否则可能会遭遇到“MySQL has gone away”之类的问题(你可以在程序里时不时mysql_ping一下,以便服务器知道你还活着,重新计算wait_timeout时间),使用

mysql>show processlist; 用这个命令来查看当前mysql的进程情况,可以看出大量的sleep进程的时间是多少,大部分的都是10左右的,这时wait_timeout值就可以设置成8-10;

设置wait_timeout的方法有2个:

# vi /etc/my.cnf (在windows下是my.ini)

[mysqld]

wait_timeout=10

# /etc/init.d/mysql restart

这个方法设置后即使服务器以后重启,设置照样生效,不过这个方法会造成mysql服务重启,无论如何都应该尽可能避免;

下面看看在MySQL命令行里通过SET来设置:

mysql> set global wait_timeout=10;

mysql> show global variables like 'wait_timeout';

+----------------------------+-------+

| Variable_name              | Value |

+----------------------------+-------+

| wait_timeout               | 10    |

+----------------------------+-------+

这里一个容易把人搞蒙的地方是如果查询时使用的是show variables的话,会发现设置好像并没有生效,这是因为单纯使用show variables的话就等同于使用的是show session variables,查询的是会话变量,只有使用show global variables,查询的才是全局变量。

网络上很多人都抱怨说他们set global之后使用show variables查询没有发现改变,原因就在于混淆了会话变量和全局变量,如果仅仅想修改会话变量的话,可以使用类似set wait_timeout=10;或者set session wait_timeout=10;这样的语法。

这个方法只是临时性的,如果服务器重启后,wait_timeout的值又会变成28800。

MySQL占用系统进程_MySQL的Sleep进程占用大量连接解决方法相关推荐

  1. 没有修改出现mysql密码错误_MySql 修改密码后的错误快速解决方法

    设置好密码后,使用数据库时出现如下错误: ERROR 1820 (HY000): You must reset your password using ALTER USER statement bef ...

  2. mysql 1118错误_Mysql 出现Error 1118的一种解决方法 | 学步园

    首先声明,对mysql不懂,很多都不知道原因 设计了一个表,里面很多text字段,然后填进去的东西太多(用的是python的MySQLdb),报错: _mysql_exceptions.Operati ...

  3. mysql id问题_MySQL分表自增ID问题的解决方法

    当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中. 应尽量避免使用自增IP来做为主键,为数据库分表操作带来极大的不便. 在postgreSQ ...

  4. 在windows和linux下如何查看80端口占用情况?是被哪个进程占用?如何终止等

    一.在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等 这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入&quo ...

  5. CPU占用内存率高的几种可能以及解决方法

    CPU占用内存率高的几种可能以及解决方法 CPU占用率高的九种可能 1.防杀毒软件造成故障 由于新版的KV.金山.瑞星都加入了对网页.插件.邮件的随机监控,无疑增大了系统负担.处理方式:基本上没有合理 ...

  6. mysql启动错误1067进程意外终止的解决方法

    mysql启动错误1067进程意外终止的解决方法 参考文章: (1)mysql启动错误1067进程意外终止的解决方法 (2)https://www.cnblogs.com/huhyoung/p/960 ...

  7. Wallpaper Engine卡顿,CPU占用高,独显没有被使用的解决方法

    Wallpaper Engine卡顿,CPU占用高,独显没有被使用的解决方法 1.独显设置 2.安装核显驱动 如果你的PC有独立显卡,但是WE桌面卡顿,用任务管理器查看发现CPU占用率高,独显没有被使 ...

  8. MySQL 查询速度慢与性能差的原因与解决方法

    MySQL 查询速度慢与性能差的原因与解决方法 更新时间:2019年09月26日 18:05:47 作者:Microtiger 随着网站数据量与访问量的增加,MySQL 查询速度慢与性能差的问题就日渐 ...

  9. dnf命令参数详细说明、bclinux8或centos8以上系统使用dnf命令离线安装本地rpm包方法及场景和原因、使用dnf命令提示正在等待 pid 为422620的进程退出。的解决方法

    文章目录 dnf命令 dnf说明 安装 DNF 包管理器 dnf [选项] 命令 [dnf使用说明] dnf安装本地rpm包 全部参数 bclinux8或centos8以上系统使用dnf命令安装rpm ...

最新文章

  1. tim指定保存云服务器_阿里云发布 Cloud Toolkit for VS Code 新版本!一键打包部署,开发提速 8 倍...
  2. SpringMvc之参数绑定注解详解
  3. 说说对javaee中的session的理解
  4. vue常用的按键修饰符
  5. Java之mybatis详解(非原创)
  6. 【java基础 3】树形结构数据呈现的递归算法实现
  7. postgresql 客户端 uri 设置时区
  8. 升余弦滤波器与无码间串扰(二)
  9. 抖音便捷小空调特效 html+css+js
  10. rails kaminari bootstrap-kaminari-views
  11. Arm 虚拟硬件与新解决方案或将颠覆物联网产品研发
  12. effect和watch 的区别详解
  13. Virtualbox上openSUSE 15.2 Leap安装guest additions
  14. Win10常用cmd命令学习(验证性实验)
  15. 黑鲨1 救黑砖 9008救砖
  16. 抄代码对自己编程提高有用吗?
  17. 双向绑定原理(个人理解)
  18. 挖个坑 - 魔法画图工具的设计
  19. 工作压力大该如何缓解焦虑呢
  20. 【ORACLE】存储过程、触发器权限问题

热门文章

  1. 马里兰大学calce电池循环测试数据集_千次循环,全程1.5V恒压,紫米新一代充电锂电池套装上手体验...
  2. python指定范围内加法代码解析
  3. java 流程控制篇 2021/02/26持续更新中
  4. 0基础讲解机器学习算法-朴素贝叶斯分类器
  5. 论文浅尝 | 基于动态知识图谱向量表示的对称合作对话代理的学习
  6. 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt
  7. Python中实现模糊匹配的魔法库:FuzzyWuzzy
  8. 活用这23种图表,让你的数据分析胜人一筹 | 推荐收藏
  9. 7 计算机组成原理第五章 中央处理器 数据通路
  10. ABAP术语-World Wide Web