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掉