PHP FPM回收是一個非常重要的概念,PHP FPM在長時間運行之后,會導致內存泄漏,從而影響系統的性能,需要經常進行PHP FPM資源回收。
一般來說,我們可以在php.ini文件中設置PHP FPM的回收機制,例如設置PHP FPM數據流量達到100MB時自動回收進程。
在回收的時候,我們可以通過以下的代碼進行操作:
kill -USR2 `pgrep php-fpm`這個命令會讓PHP FPM重新加載它的配置文件,并在重載完成后殺死進程。 除了上述方法外,還可以使用nginx的reload命令來回收PHP FPM資源:
service nginx reload這將會重新加載NGINX配置,重新啟動PHP FPM進程并重新啟動NGINX服務器。 PHP FPM回收還有一個非常常用的方法,那就是使用腳本定時回收。 例如,我們可以創建一個Shell腳本,在其中編寫以下代碼:
#!/bin/bash #FPM Pool FPMPOOLDIR=/usr/local/etc/php-fpm.d #FPM Pids FPMPOOLDIRS=$FPMPOOLDIR/*.conf FPMPOOLDIRS=${FPMPOOLDIRS/\*/} for FPMPOOLDIR in $FPMPOOLDIRS do #Get PID FPMPOOLPID=$(cat $FPMPOOLDIR | grep "pid = " | awk -F'[/ ]' '{print $NF}') #Fix for Fedora 20-22 if [ "$FPMPOOLPID" = "@fpm_systemd@.service" ] then FPMPOOLPID=$(systemctl show -p MainPID php-fpm | awk -F= '{print $2}') fi #Skip non numeric PIDs [[ "$FPMPOOLPID" =~ ^[0-9]+$ ]] || continue #Skip if the PID is not up kill -0 $FPMPOOLPID 2>/dev/null || continue #Send a USR2 signal to this pool kill -USR2 $FPMPOOLPID done這樣,我們就可以在Shell中執行該腳本,定時回收PHP FPM資源。 總之,PHP FPM回收是非常重要的一步,并且需要時刻注意和維護。我們可以通過設置、命令、腳本等多種方式進行回收,保證PHP FPM的資源使用以及系統的性能。
下一篇php fpm 命令