解決Linux下php-fpm進程過多導致記憶體耗盡問題_php實例
這篇文章主要介紹了解決Linux下php-fpm進程過多導致記憶體耗盡問題,需要了解php-fpm朋友可以參考下本篇文章,學習一下如何解決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%。
systemctl restart php-fpm
ps:查看php-fpm開啟的進程數以及每個進程的記憶體限制
1.透過指令查看伺服器上一共開了多少的php-cgi 程序ps -fe |grep "php-fpm"|grep "pool"|wc -l
netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
設定方法:
編輯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進程過多導致記憶體耗盡問題解決,希望對大家有幫助。
相關推薦:
以上是解決Linux下php-fpm進程過多導致記憶體耗盡問題_php實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。
