問題狀態
重啟mysql也盡是失敗,看mysql的errorlog,只能看到類似如下的信息:
Forcing close of thread 12232 user: 'root'
用mysqladmin 簡單的監控了下mysql的情況:
mysqladmin -uroot -p******** status -i 1
發現Queries per second avg只有200左右,可以說很低,但是Threads 確非常不穩定,居然會瞬間升級200以上,一般情況下這個線程這個值都是不會高於5的個位數!
mysqladmin -uroot -p******** processlist
| 2007 | unauthenticated user | 192.168.4.29:58519 | | Connect | | login | |
| 2008 | unauthenticated user | 192.168.4.29:58553 | | Connect | | login | |
| 2009 | unauthenticated user | 192.168.4.29:58571 | | Connect | | login | |
| 2010 | unauthenticated user | 192.168.4.29:58577 | | Connect | | login | |
| 2011 | unauthenticated user | 192.168.4.29:58579 | | Connect | | login | |
| 2012 | unauthenticated user | 192.168.4.29:58589 | | Connect | | login | |
原因分析
MySQL會嘗試去反查IP->DNS,由於反查解析過慢,無法應付快速多量的查詢。
解決辦法
解決方式很簡單:啟動MySQL的時候,添加--skip-name-resolve選項
重新載入配置文件或者重啟MySQL服務即可。