目錄
您可能感興趣的文章:
首頁 後端開發 php教程 解決Linux下php-fpm進程過多導致記憶體耗盡問題詳解

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

Jul 07, 2018 pm 05:55 PM
fpm linux php 記憶體 行程

這篇文章主要介紹了解決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中資料遷移與資料填充的詳細步驟詳解

##

以上是解決Linux下php-fpm進程過多導致記憶體耗盡問題詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

mysql 可以在 android 上運行嗎 mysql 可以在 android 上運行嗎 Apr 08, 2025 pm 05:03 PM

MySQL無法直接在Android上運行,但可以通過以下方法間接實現:使用輕量級數據庫SQLite,由Android系統自帶,無需單獨服務器,資源佔用小,非常適合移動設備應用。遠程連接MySQL服務器,通過網絡連接到遠程服務器上的MySQL數據庫進行數據讀寫,但存在網絡依賴性強、安全性問題和服務器成本等缺點。

無法從終端訪問 mysql 無法從終端訪問 mysql Apr 08, 2025 pm 04:57 PM

無法從終端訪問 MySQL 可能是由於:MySQL 服務未運行;連接命令錯誤;權限不足;防火牆阻止連接;MySQL 配置文件錯誤。

PHP的未來:改編和創新 PHP的未來:改編和創新 Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

Linux最有用的是什麼? Linux最有用的是什麼? Apr 09, 2025 am 12:02 AM

Linux在服務器、嵌入式系統和桌面環境中的應用廣泛。 1)在服務器領域,Linux因其穩定性和安全性成為託管網站、數據庫和應用的理想選擇。 2)在嵌入式系統中,Linux因其高度定制性和高效性而受歡迎。 3)在桌面環境中,Linux提供了多種桌面環境,滿足不同用戶需求。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

CENTOS面試問題:ACE您的Linux系統管理員面試 CENTOS面試問題:ACE您的Linux系統管理員面試 Apr 09, 2025 am 12:17 AM

CentOS面試常見問題及解答包括:1.使用yum或dnf命令安裝軟件包,如sudoyuminstallnginx。 2.通過useradd和groupadd命令管理用戶和組,如sudouseradd-m-s/bin/bashnewuser。 3.使用firewalld配置防火牆,如sudofirewall-cmd--permanent--add-service=http。 4.設置自動更新使用yum-cron,如sudoyuminstallyum-cron並配置apply_updates=yes。

如何學習Linux基礎知識? 如何學習Linux基礎知識? Apr 10, 2025 am 09:32 AM

Linux基礎學習從零開始的方法包括:1.了解文件系統和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.學習文件操作,如創建和編輯文件,4.探索高級用法如管道和grep命令,5.掌握調試技巧和性能優化,6.通過實踐和探索不斷提陞技能。

php:死亡還是簡單地適應? php:死亡還是簡單地適應? Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

See all articles