解決Linux下php-fpm進程過多導致記憶體耗盡問題詳解

來源:互聯網
上載者:User
這篇文章主要介紹瞭解決Linux下php-fpm進程過多導致記憶體耗盡問題,需要的朋友可以參考下

最近,發現個人部落格的Linux伺服器,資料庫服務經常掛掉,導致需要重啟,才能正常訪問,極其噁心,於是決心開始解決問題,解放我的時間和精力(我可不想經常出問題,然後人工重啟,費力費時)。

分析問題

發現問題以後,首先使用 free -m 指令查看當前伺服器執行狀況:

可以看到我的伺服器記憶體是2G的,但是目前可用記憶體只剩下70M,記憶體使用量率高達92%,很有可能是記憶體使用量率過高導致資料庫服務掛斷。

繼續看詳細情況,使用 top 指令:

然後再看指令輸出結果中詳細列出的進程情況,重點關注第10列記憶體使用量佔比:

發現CPU使用率不算高,也排除了CPU的問題,另外可以看到資料庫服務佔用15.2%的記憶體,記憶體使用量過高時將會擠掉資料庫進程(佔用記憶體最高的進程),導致服務掛斷,所以我們需要查看詳細記憶體使用量情況,是哪些進程耗費了這麼多的記憶體呢?

使用指令:

ps auxw|head -1;ps auxw|sort -rn -k4|head -40

查看消耗記憶體最多的前40個進程:

查看第四列記憶體使用量佔比,發現除了mysql資料庫服務之外,php-fpm服務池開啟了太多子進程,佔用超過大半記憶體,問題找到了,我們開始解決問題:設定控制php-fpm進程池進程數量。

解決問題

通過各種搜尋手段,發現可以通過配置 pm.max_children 屬性,控制php-fpm子進程數量,首先,開啟php-fpm設定檔,執行指令:

vi /etc/php-fpm.d/www.conf

找到 pm.max_children 欄位,發現其值過大:

pm.max_children 值為50,每一個進程佔用1%-2.5%的記憶體,加起來就耗費大半記憶體了,所以我們需要將其值調小,博主這裡將其設定為25,同時,檢查以下兩個屬性:

pm.max_spare_servers : 該值表示保證空閑進程數最大值,如果空閑進程大於此值,此進行清理 pm.min_spare_servers : 保證空閑進程數最小值,如果空閑進程小於此值,則建立新的子進程;

這兩個值均不能不能大於 pm.max_children 值,通常設定 pm.max_spare_servers 值為 pm.max_children 值的60%-80%。

最後,重啟php-fpm

systemctl restart php-fpm

再次查看記憶體使用量情況, 使用記憶體降低很多:

之後經過多次觀察記憶體使用量情況,發現此次改進後,伺服器記憶體資源消耗得到很大緩解。

ps:查看php-fpm開啟的進程數以及每個進程的記憶體限制

1.通過命令查看伺服器上一共開了多少的 php-cgi 進程

 ps -fe |grep "php-fpm"|grep "pool"|wc -l

2.查看已經有多少個php-cgi進程用來處理tcp請求

 netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l

3.linux+nginx+php環境中,每個php-fpm進程的記憶體限制

設定方法:

編輯php-fpm.conf設定檔

php_admin_value[memory_limit] = 128M(我伺服器上的設定檔在/etc/php5/fpm/pool.d/www.conf 這個檔案是被包含在php-fpm.conf裡的) 後邊的數字可以隨便更改:32M,64M,128M,256M,512M,這個設定可根據你的伺服器記憶體大小和你的需求來寫,修改後要載入一下php-fpm服務。

總結

以上所述是小編給大家介紹的Linux下php-fpm進程過多導致記憶體耗盡問題解決,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對php中文網的支援!

您可能感興趣的文章:

php實現簽到功能的方法執行個體分析詳解

linux下的php-fpm參數配置介紹與參數最佳化說明詳解

Laravel中資料移轉與資料填充的詳細步驟詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.