2017-05-11 70 views
0

我有以下問題。Innodb崩潰,直到服務器重啓才啓動mysql

我有一個安裝了LAMP的AWS EC2 t2.micro實例。

我的WebApp使用InnoDB表。如果有很多用戶,InnoDB會因緩衝池大小而崩潰。它說它不能分配足夠的內存。

170511 10時32分05秒的InnoDB:初始化緩衝池,大小= 128.0M

InnoDB的:MMAP(137363456個字節)失敗;錯誤號12

我已經把innodb_buffer_pool_size到750M(如果我把它更多的1GB - MySQL不啓動的話)。我已經在LoadImpact下對我的WebApp進行了壓力測試。從30人起,WebApp試圖分配800M之類的東西,並再次崩潰MySQL。

170511 12時16分04秒的InnoDB:初始化緩衝池,大小= 752.0M

InnoDB的:MMAP(807010304個字節)失敗;錯誤號12

另一個問題是,我不能只運行sudo的服務mysql的啓動重啓 mysql的崩潰之後。它說工作沒有開始。

  1. 如何讓我的服務器更穩定。我應該使用什麼選項。
  2. 如何防止這種「碰撞」行爲。我的意思是我可以做一些使服務器和MySQL的工作不會變亂但凍結或類似的東西。我不想做的每一個有很多人的網站
+0

MySQL是**沒有**崩潰。它被Apache殺死,然後拒絕它所需的資源,以便重新啓動。 https://dba.stackexchange.com/a/25083/11651 –

回答

0

t2.micro實例只有512M RAM的時間須藤reboo。如果你在同一個盒子上運行MySQL和Apache,你應該謹慎地分配內存。

它看起來像Apache進程使用所有的內存,所以MySQL得到最低限度的必要。

如果您還沒有添加,我建議先從添加交換開始。

dd if=/dev/zero of=/swapfile bs=1024 count=65536 
chmod 0600 /swapfile 
mkswap /swapfile 
swapon /swapfile 

並將其添加到/etc/fstab

/swapfile   swap   swap defaults  0 0 

接下來,限制Apache工作人員以確保MySQL始終獲得innodb_buffer_pool_size。取決於你使用什麼 - prefork或工作人員配置會有所不同,但你有一個想法。

相關問題