2012-07-01 103 views
3

我在亞馬遜Linux AMI上運行MySQL。沒有任何連接。沒有連接,也沒有其他運行MySQL的應用程序。它完全空閒,但是,top報告說mysql正在使用62%的CPU?爲什麼會發生這種情況,我該如何解決?EC2 Amazon Linux AMI MySQL CPU @ 62%空閒時?

Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 97.8%id, 0.0%wa, 0.0%hi, 0.0%si, 1.7%st 
Mem: 1738504k total, 390708k used, 1347796k free, 56888k buffers 
Swap: 917500k total,  0k used, 917500k free, 229804k cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
2959 mysql  20 0 466m 39m 5244 S 62.2 2.3 4:00.67 mysqld 
    1 root  20 0 19252 1504 1212 S 0.0 0.1 0:00.20 init 
    2 root  20 0  0 0 0 S 0.0 0.0 0:00.00 kthreadd 

無可...

mysql> show processlist; 
+----+------+-----------+------+---------+------+-------+------------------+ 
| Id | User | Host  | db | Command | Time | State | Info    | 
+----+------+-----------+------+---------+------+-------+------------------+ 
| 5 | root | localhost | NULL | Query | 0 | NULL | show processlist | 
+----+------+-----------+------+---------+------+-------+------------------+ 

UPDATE: 我的問題肯定是關係到領先第二名錯誤。榮譽nico-ekito。謝謝!

+0

難道它只是使用CPU索引,處理,循環等? 100%CPU或60%不一定是問題。這僅僅意味着你所付出的東西正在被使用。 – Linuxios

+1

也許閏秒相關:http://stackoverflow.com/questions/11279076/why-does-the-leap-second-cause-和http://blog.mozilla.org/it/2012/06/30/mysql -and-the-leap-second-high-cpu-and-the-fix/ –

+0

是的!我認爲就是這樣。我的Java進程正在做同樣的事情。一切從7/1 00:00:00開始。我會重新啓動,看看它是否消失。你應該重新提交這個評論作爲答案,我會接受它(等待重啓和驗證課程:) – Jeff

回答

0

結束這個問題。我的問題確實與閏秒慘敗有關。

1

我能想到的唯一的事情就是檢查真的是做什麼的mysqld使用strace的,作爲用戶root:

strace -p 2959 

通常情況下,strace的,應立即阻止,並顯示你的電話選擇(),因爲mysqld應該在等待連接。

通話應該是這樣的:

select(SOCKETNO, [OTHER_FDs], NULL, NULL, NULL) 

尤其重要的是第四個參數,這是一個超時的timeval。如果爲NULL,則意味着mysqld將會睡眠,直到有人連接。如果不是NULL,則表示mysqld將等待指定的時間,然後執行一些維護工作。一個非常小的timeval可能會解釋CPU消耗。

我相信MySQL總是使用NULL(無限)超時。這是有道理的,這就是我現在能夠達到的mysqld的行爲。

但是,可能會有一些連接處理問題阻止select再次進入休眠狀態。檢查這個行爲是否在mysqld啓動後立即出現,或者在有人連接後出現。