2014-01-29 18 views
0

網頁加載速度很慢,甚至開始發送頁面數據需要6秒左右,然後在0.2秒內發送,並在0.19秒內生成。如何調試php-fpm的性能?

我懷疑這是由PHP或瀏覽器造成的,所以這個問題必須與通過nginx的和PHP5-FPM

的服務器管理員說,確實是這個問題是由錯誤配置引起的處理服務器fpm或nginx

如何調試減速的原因?

設置:PHP5.3,MYSQL5,Linux的,Nginx的,PHP5-FPM

回答

1

這個問題可能是對的StackOverflow太廣,因爲這個問題可以跨越多個頁面和主題。

但是,如果問題是如何調試PHP-FPM的性能,那麼答案會更容易 - 使用Strace和下面的腳本。

#!/bin/bash 

mkdir trc 
rm -rf trc/*.trc 

additional_strace_args="$1" 

MASTER_PID=$(ps auwx | grep php-fpm | grep -v grep | grep 'master process' | cut -d ' ' -f 7) 

summarise="" 
#shows total of calls - comment in to get 
#summarise="-c" 

nohup strace -r $summarise -p $MASTER_PID -ff -o ./trc/master.follow.trc >"trc/master.$MASTER_PID.trc" 2>&1 & 

while read -r pid; 
do 
    if [[ $pid != $MASTER_PID ]]; then 
     #shows total of calls 
     nohup strace -r $summarise -p "$pid" $additional_strace_args >"trc/$pid.trc" 2>&1 & 
    fi 
done < <(pgrep php-fpm) 

read -p "Strace running - press [Enter] to stop" 

pkill strace 

該腳本將附加strace所有運行PHP-FPM實例。任何到達php-fpm的Web服務器的請求都會記錄下他們的所有系統調用,這將允許您檢查哪些服務器花費最多時間,這將使您能夠首先確定需要優化的內容。另一方面,如果從Strace輸出中可以看出PHP-FPM正在快速處理每個請求,它也將允許您消除該問題,並允許您調查nginx,以及nginx如何與PHP-FPM交談,這也可能是問題所在。

+0

更改了標題,使它不那麼寬泛,謝謝 –

+0

我注意到這個腳本在Debian上不能很好地工作,我將下面的'mkdir'語句改爲'mkdir -p','MASTER_PID = $(。 ....)'MASTER_PID = $(pgrep -f「php-fpm:master process」)''的行 –