當前位置:
首頁 > 知識 > mysql意外宕機現象分析

mysql意外宕機現象分析

最近在雲上的博客系統總是資料庫宕機導致服務異常。登到伺服器上重啟mysql有時也啟動不了,查看mysql的日誌,發現如下錯誤:

InnoDB: mmap(137363456 bytes) failed; errno 12
InnoDB: Cannot allocate memory for the buffer pool

搜索「InnoDB: mmap(137363456 bytes) failed; errno 12」發現是內存不夠了,解決辦法很簡單,修改一下/etc/my.cnf

innodb_buffer_pool_size=32M

高版本的mysql這個參數默認是128M。

用free -m 查看了下系統,發現可用內存確實不夠128M,用top 查看,按下M,看到很多php-fpm進程,用

ps -ef|grep php-fpm | wc -l

查看一下發現,有37個,這樣佔用的內存過多,導致mysql在申請內存時,沒有足夠內存可用而導致宕機。

搜索「php-fpm進程過多」,發現是php-fpm 子進程設置問題。 使用pm = dynamic 模式下,修改一下參數:

pm.max_children = 25
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

這樣,重啟下php-fpm,php-fpm的進程在訪問限制的時候會降到10個。

pm.max_children:靜態方式下開啟的php-fpm進程數量。
pm.start_servers:動態方式下的起始php-fpm進程數量。
pm.min_spare_servers:動態方式下的最小php-fpm進程數。
pm.max_spare_servers:動態方式下的最大php-fpm進程數量。

mysql意外宕機現象分析

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

JDBC連接SQLsever2008出現錯誤,求解決
vue-cli的工程模板與構建工具

TAG:程序員小新人學習 |