问题分析

sleep进程过多

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

1. 使用了太多持久连接

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

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

使用如下命令查看mysql所有进程

mysql> show full processlist;

这里主要看以下几点!Host 表示都有哪些地址和端口连接了数据库

Command 表示连接状态 sleep表示等待状态

Time 表示时间

info 具体执行的操作

通过命令查看得知sleep很多,而且time时间也不一样,有的甚至几千秒。大家都知道每一个进程都会占用相应的系统资源。如果sleep进程较多必定影响mysql使用。

如果某天你发现你的网站突然之后有些动态资源无法加载页面无法显示,很有可能是mysql进程太多导致客户端连接mysql的时候无资源可用 这是网站可能显示504 timeout

很多人有疑问为什么会有这么多sleep进程?

答:mysql默认wait_timeout=28800 也就是8小时,wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能。不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL server has gone away”之类的问题。

这里引申出mysql的两种连接方式 长连接 and 短连接

长连接:长连接是相对于短连接来说的。长连接指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。MySQL的长连接如果长期闲置,mysql会8小时后(默认时间)主动断开该连接。

客户端连接--创建socket认证连接--维护连接--数据传输--维护连接--数据传输.....-关闭连接

短连接:是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。

客户端连接--创建socket认证连接--维护连接--数据传输--关闭连接

如何选择mysql连接方式?请根据具体情况而定

用户少,使用长连接,减少web端与数据库的逻辑连接数,可以让连接保持久一点,不用频繁建立连接。

用户多,使用短链接,这样用于使用完后就释放连接了。但是消耗系统资源多一点。

这里提供两种解决办法:使用kill id   杀掉sleep进程  可以用脚本方式批量查杀

设置wait_timeout = 100

使用脚本批量查杀有可能造成数据崩溃,脚本请看这里

cat mysql_sleep.sh

#!/bin/sh

user=root

passwd=12345678

host=192.168.1.100

while :

do

n=`mysqladmin processlist -u$user -p$passwd -h$host | grep -i sleep | wc -l`

date=`date +%Y%m%d[%H:%M:%S]`

echo $n

if [ "$n" -gt 20 ]

then

for i in `mysqladmin processlist -u$user -p$passwd -h$host | grep -i sleep | awk '{print $2}'`

do

mysqladmin -u$user -p$passwd -h$host kill $i

done

echo "sleep is too many I killed it " >> /tmp/sleep.log

echo "$date : $n" >> /tmp/sleep.log

fi

sleep 1

done

mysql show sleep_mysq解决sleep进程过多的办法相关推荐

  1. 启动mysql提1067_win7系统启动mysql服务提升错误1067进程意外终止的解决方法

    很多小伙伴都遇到过win7系统启动mysql服务提升错误1067进程意外终止的困惑吧,一些朋友看过网上零散的win7系统启动mysql服务提升错误1067进程意外终止的处理方法,并没有完完全全明白wi ...

  2. mysql清理死链接_对MySQL的死连接Sleep的进程的来源研究

    当前的连接数: mysql> show status like '%Threads_connected%'; +-------------------+-------+ | Variable_n ...

  3. php 管理服务器内存,解决PHP-FPM进程导致的服务器内存占用

    最近php-fpm服务器经常内存偏高. 最简单也是马上见效的方法是重启服务,干脆重启服务器,这个对于某些临时进程导致的内存虚高可能有效,这里显然是不行滴.很可能影响到业务. 解决 查看服务器内存及进程 ...

  4. 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法

     mysql安装完之后,登陆后发现只有两个数据库:mysql>show databases; +--------------------+ | Database           | +- ...

  5. mysql slave同步_Slave_SQL_Running: No mysql同步故障解决方法

    Slave_SQL_Running: No mysql同步故障解决 今天检查数据库发现一台MySQL Slave未和主机同步,查看Slave状态: mysql> show slave statu ...

  6. MySQL锁表解决方法(转)

    MySQL锁表解决方法 一.我的处理过程 1.查进程,主要是查找被锁表的那个进程的ID SHOW PROCESSLIST; 2.kill掉锁表的进程ID KILL 10866;//后面的数字即时进程的 ...

  7. 无法登录 MySQL 服务器 如何解决?

    解决办法是重新设置root用户密码,在windows平台下操作步骤如下: 1.以系统管理员身份登录到系统: 2.如果mysQL服务器正在运行,停止它. 如果是作为windows服务运行的服务器,进入服 ...

  8. 排查解决Java进程占用内存过高

    排查解决Java进程占用内存过高 1 在项目部署运行之前 1 检查JVM参数设置 2 检查代码逻辑 3 使用内存分析工具 4 检查线程 5 调整应用程序的设计 7 调整硬件资源 2 在项目部署运行之后 ...

  9. linux mysql 主从 1130_Linux Mysql 1130错误解决

    Linux Mysql 1130错误解决 今天在win32下通过navicat 远程登录Mysql时出现如下错误: 想都不用想,肯定是Mysql的访问权限问题. 首先,通过终端(我用的是SSH)远程登 ...

最新文章

  1. nova resize代码调用部分分析
  2. 详细设计 存储分配_10k+点赞的 Spring Boot 后台管理系统竟然出了详细教程!爱了!...
  3. php global global,PHP中global全局变量的作用范围
  4. Android九宫图(draw9patch)
  5. OpenCV纹理对象的实时姿态估计
  6. electron sqlite3_electron集成sqlite3,win10上折腾了2天
  7. python四位玫瑰数的解题思路_入门python知识点总结以及15道题的解题思路分析
  8. 【BZOJ4543】【POI2014】Hotel加强版(长链剖分)
  9. 一步一步写算法(之排序二叉树插入)
  10. PKU 3013 Big Christmas Tree 最短路 spfa
  11. image 第二次使用就出错是怎么回事_第二次上机报告-RNA-seq (HISAT - SAMtools- StringTie - ballgown)amp;amp;Gene-Assembly
  12. java 获取html title_java htmlparser 获取网页title
  13. C语言—今天星期几(详细注释)
  14. HaaS云端一体智能语音交互方案
  15. 伍鸣博士受邀出席徐汇区住房租赁市场研讨会
  16. typora字体设置颜色的解决方案
  17. kubernetes 核心术语
  18. 搜索引擎突然无法访问问题
  19. 2021年度训练联盟热身训练赛第八场
  20. 计算机图形学基础之一点两点三点透视图

热门文章

  1. 读书笔记∣概率论沉思录 01
  2. mysql 每日新增表分区
  3. R语言访问mysql和posqlgresql
  4. GitHub详解(转)
  5. easyui datagrid 列中的checkbox 动态绑定
  6. 用aspnetpager实现datalist分页
  7. SL4A/Py4A直接在adb中用python加载脚本
  8. gitlab用户,组,项目权限管控
  9. Oracle下载 OPatch
  10. CMake,win10,64位,简单配置测试