2016-02-11 263 views
-2

我相信我的實例每隔幾天就會因爲高CPU或內存使用量而一直在殺死MySQL。該數據庫是有點大(256 MB)當連接到該實例我試過靠前指揮,這裏是一個快照:亞馬遜EC2實例殺死MySQL

Cpu(s): 64.3%us, 1.0%sy, 0.0%ni, 34.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st 
Mem: 2051644k total, 2019380k used, 32264k free,  4196k buffers 
Swap:  0k total,  0k used,  0k free, 284064k cached 

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
2573 apache 20 0 554m 145m 10m S 40.6 7.3 3:18.79 httpd 
2572 apache 20 0 661m 151m 10m S 16.6 7.6 3:37.72 httpd 
2481 mysql  20 0 861m 170m 4736 S 8.7 8.5 8:15.37 mysqld 

我看到CPU佔用率會高達80%,只是看它了一會兒。我能做些什麼來減少CPU或內存使用量?我將實例大小增加到中等,但它從不崩潰,但是,這非常昂貴。謝謝。

+0

1. ServerFault。 2.當你用完內存時會發生這種情況。 – kervin

回答

1

查看統計信息,您沒有剩餘大量可用內存。你可能會很容易遇到這樣的情況:linux將開始終止進程​​以釋放內存。系統日誌將顯示與殺手鐗相關的消息。

你能做什麼?

  1. 啓用交換內存。將允許您超過2 GB,但可能會非常慢。
  2. 調整mysql配置以使用較少的緩存。
  3. 禁用您未使用的任何apache模塊。
  4. 看起來你可能有一個標準的LAMP堆棧。如果是這種情況,請使用fcgi而不是mod_php來配置php。
+0

這是個好建議。另外,我還會添加在單獨的服務器上運行MySQL的選項,以便它不會與Apache競爭系統資源。 –