Mysql里面执行show processlist出现很多Sleep状态的线程
 
由于程序设计的Bug,导致目前这个项目使用的中有很多Sleep状态的线程。找了很多解决办法,还没发现最终有效的解决方案。只能临时使用如下方法:
 
编写shell文件,如killSleepProcess.sh
 
[plain] 
while :  
do  
  n=`admin -uroot -p*** processlist | grep -i sleep | wc -l`  
  date=`date +%Y%m%d\[%H:%M:%S]`  
  echo $n  
  
  if [ "$n" -gt 10 ]  
  then  
    for i in `mysqladmin -uroot -p*** processlist | grep -i sleep | awk '{print $2}'`  
    do  
      mysqladmin  -uroot -p*** kill $i  
    done  
    echo "sleep is too many i killed it" >> /root/tmp/sleep.log  
    echo "$date : $n" >> /root/tmp/sleep.log  
  fi  
sleep 120 #每隔120 秒 执行一次  
done  

 

上面shell代码的结果是:将show processlist查询出的所有为Sleep状态的线程kill掉