一台unibilling機器前幾天突然負載變重. 在top中發現cpu被大量占用. agi程序運行的很慢,並出現僵屍進程. 其實當時只有50個左右的並發呼叫. 遠遠達不到正常水准. 重新啟動機器問題也沒得到解決. 非常奇怪.
考慮到在top中看到mysqld占用的資源最多,就進入mysql控制台,運行show processlist命令, 發現某進程的信息很特殊:
User "unauthenticated user"
Command "connect"
State "reading from net"難道是黑客從internet上攻擊我的機器? 顯然不是, 因為Host那一列顯示的是”localhost”.
沒辦法. 在google上一查找,竟發現若干人遇到過該問題. 也不能算是mysql的bug,因為通過更改配置文件/etc/my.cnf即可解決.
具體地講,在mysqld那一欄中添加skip-name-resolve
[mysqld]
skip-name-resolve
注意, skip-name-resolve可以禁用dns解析,但是,這樣不能在mysql的授權表中使用主機名了,只能使用IP. 以前創建mysql用戶是若用的是localhost現在則需要用127.0.0.1來代替在grant語句中執行一下添加該用戶.
然後, 重新啟動mysqld.
作者OurMySQL