ECS記憶體佔用高導致wordpress資料庫經常掛掉的兩種解決方法

lixon166發表於2021-02-15

搭建的網站,用的是一個超級簡單的主題,阿里的免費虛機,純粹的文字內容,幾乎沒有外掛。用的是正版begin主題,外掛儘可能少,最近連seo外掛都沒用了,但是依舊經常當機,動不動提示資料庫連線錯誤,重啟立刻恢復。看了看,記憶體佔用一直在90%以上,所以懷疑是主題功能太多,佔用記憶體高,導致mysql掛掉。幾乎一天掛一次了。

目前反而免費虛機穩定,不過一被攻擊就停機4小時實在受不了,不過反正就是放自己文字,沒什麼別的用處,也沒想要人訪問,所以無所謂了。飛向電影還是希望能有些訪問的,但是一直經常性的出現mysql掛掉的問題,自己網站運維確實是小白,心碎。

關於ECS上搭建 網站,mysql掛掉的問題,網上好多建議用阿里雲RDS,但是價格太高,目前低配一年就1000多,比ECS價格貴得多。對於一個沒收入的個人小站來說,沒必要投這個錢。也有建議升級記憶體的,但是我不確定是不是確實就僅僅是記憶體問題,留待觀察,有必要的話倒是可以升級一下。

問度娘了之後,做了些修改。

一:透過修改WordPress自身檔案修改放寬記憶體限制(如果你也是由於使用過多外掛造成該問題的,建議使用此方法)

只要開啟WordPress根目錄wp-includes資料夾下default-constants.php檔案,搜尋“set memory limits”找到如下程式碼

// set memory limitsif ( !defined('WP_MEMORY_LIMIT') ) {if( is_multisite() ) {define('WP_MEMORY_LIMIT', '64M');} else {define('WP_MEMORY_LIMIT', ‘40M');}}if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) {define( 'WP_MAX_MEMORY_LIMIT', '256M' );}

然後把define(‘WP_MEMORY_LIMIT’, ‘40M’);32M這個預設值修改為更大一些的值,我把它修改為512M!

二:修改php-fpm.conf的pm.start_servers、pm.min_spare_servers、pm.max_spare_servers等項

據說問題出在PHP-CGI會釋放記憶體,但並不會把記憶體歸還系統,所以當過多的PHP-FPM子程式存在時,記憶體就會一點點被吃幹,最終導致溢位。
php-fpm.conf檔案在/alidata/server/php/etc裡,找到並做了幾項修改:
開啟編輯這個檔案,可以透過FTP或者LINUX命令列進行修改。主要涉及幾個引數。
pm 這個是設定執行方式的,分別是static(靜態)或者dynamic(動態)
預設應該是在214行左右,顯示為?pm = dynamic,意思就是動態方式,如果記憶體小,比如512M,1G,2G之類,建議使用動態。
pm.max_children:靜態方式下開啟的php-fpm程式數量,這個是有在pm模式為static的情況下生效。

pm.start_servers:動態方式下的起始php-fpm程式數量,這個是pm位dynamic模式下需要設定的引數,意思就是啟動執行時建立的起始php-fpm程式數量,預設20,暫時改成pm.start_servers =?3

pm.min_spare_servers:動態方式下的最小php-fpm程式數,預設5,暫時改成pm.min_spare_servers =?3

pm.max_spare_servers:動態方式下的最大php-fpm程式數量,預設60,暫時改成pm.max_spare_servers =?10

pm.max_requests:接受多少次請求後自動重啟程式的,預設是500,暫時改成pm.max_requests = 200
重啟後睡覺了(呃,太晚了),第二天看了下雲監控,記憶體佔用從98%,降到了54%.

目前就改了這兩處,留待觀察。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992808/viewspace-2757285/,如需轉載,請註明出處,否則將追究法律責任。

相關文章