Mysql裡面執行show processlist出現很多Sleep狀態的線程 由於程序設計的Bug,導致目前這個項目使用的數據庫中有很多Sleep狀態的線程。找了很多解決辦法,還沒發現最終有效的解決方案。只能臨時使用如下方法: 編寫shell文件,如killSleepProcess.sh
[plain] while : do n=`mysqladmin -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掉