避免PHP-FPM記憶體洩漏導致記憶體耗盡
對於PHP-FPM多程式的模式,想要避免記憶體洩漏問題很簡單,就是要讓PHP-CGI在處理一定數量程式後退出即可。
否則PHP程式或第三方模組(如Imagemagick擴充套件)導致的記憶體洩漏問題會導致記憶體耗盡或不足。
php-fpm.conf中有相關配置:
#請自行按需求配置
pm.max_requests = 1024
實際上還有另一個跟它有關聯的值max_children,這個是每次php-fpm會建立多少個程式,這樣實際上的記憶體消耗是max_children*max_requests*每個請求使用記憶體。
另外一些粗暴的方法包括建立cron kill掉佔用記憶體過多的php-cgi,
1.檢查php程式的記憶體佔用,殺掉記憶體使用超額的程式
一般情況下,如果php-cgi程式佔用超過1%的記憶體,就得考慮一下是否要殺掉它了。因為普通情況下,php-cgi程式一般佔用0.2%或以下。
這裡提供一個指令碼供各位使用,就是放在cron任務裡,每分鐘執行一次。
使用crontab -e 命令,然後新增如下排程任務
* * * * * /bin/bash /usr/local/script/kill_php_cgi.sh
kill_php_cgi.sh指令碼如下
#!/bin/sh
#如果是要殺掉php-fpm的程式,下面的語句中php-cgi請改成php-fpm
pids=`ps -ef|grep php-cgi|grep -v “grep”|grep -v “$0″| awk `{print $2}“
if [ “$pids” != “” ];then
for pid in $pids;
do
kill -9 $pid
done
fi
2.增加記憶體,將PHP_FCGI_MAX_REQUESTS的值設定成跟你記憶體總儲存量相對應的值
3.優化程式,降低處理每次請求佔用的記憶體大小
如果PHP-FPM能夠提供配置子程式記憶體超過指定大小就被kill,那就省事多了
以上是雲棲社群小編為您精心準備的的內容,在雲棲社群的部落格、問答、公眾號、人物、課程等欄目也有的相關內容,歡迎繼續使用右上角搜尋按鈕進行搜尋記憶體 , 程式 , 程式 , 記憶體洩漏 , 配置 php-fpm php fpm記憶體洩漏、如何避免記憶體洩漏、c 避免記憶體洩漏、避免記憶體洩漏、資訊洩漏可導致,以便於您獲取更多的相關知識。
相關文章
- 記憶體洩漏-原因、避免和定位記憶體
- 共享記憶體段未釋放導致資料庫記憶體被耗盡記憶體資料庫
- 記憶體洩漏記憶體
- Android記憶體優化(三)避免可控的記憶體洩漏Android記憶體優化
- 如何避免JavaScript中的記憶體洩漏?JavaScript記憶體
- 記憶體分析與記憶體洩漏定位記憶體
- 記憶體洩漏和記憶體溢位記憶體溢位
- Linux下php-fpm程式過多導致記憶體耗盡問題解決LinuxPHP記憶體
- js記憶體洩漏JS記憶體
- Java記憶體洩漏Java記憶體
- webView 記憶體洩漏WebView記憶體
- Javascript記憶體洩漏JavaScript記憶體
- [譯] Swift:通過示例避免記憶體洩漏Swift記憶體
- 避免使用Handler而造成的記憶體洩漏記憶體
- 4類 JavaScript 記憶體洩漏及如何避免JavaScript記憶體
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- 分析記憶體洩漏和goroutine洩漏記憶體Go
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- 記憶體的分配與釋放,記憶體洩漏記憶體
- 1.記憶體優化(一)記憶體洩漏記憶體優化
- valgrind 記憶體洩漏分析記憶體
- Android 記憶體洩漏Android記憶體
- Android記憶體洩漏Android記憶體
- 淺談記憶體洩漏記憶體
- 記憶體洩漏的原因記憶體
- JavaScript 記憶體洩漏教程JavaScript記憶體
- 說說 記憶體洩漏記憶體
- 耗盡實體記憶體觀查swap記憶體
- 記憶體洩漏與記憶體溢位神比較記憶體溢位
- [Java基礎]記憶體洩漏和記憶體溢位Java記憶體溢位
- Java棧溢位|記憶體洩漏|記憶體溢位Java記憶體溢位
- c++ 虛解構函式[避免記憶體洩漏]C++函式記憶體
- 在 ArkTS 中,如何有效地進行記憶體管理和避免記憶體洩漏?記憶體
- Perfdog 玩轉記憶體洩漏記憶體
- WebView引起的記憶體洩漏WebView記憶體
- .Net程式記憶體洩漏解析記憶體
- iOS檢測記憶體洩漏iOS記憶體
- Android 記憶體洩漏分析Android記憶體