[英]How to debug php-fpm performance?
網頁加載速度非常慢,甚至開始發送頁面數據大約需要 6 秒,然后在 0.2 秒內發送並在 0.19 秒內生成。
我懷疑是php或者瀏覽器引起的,所以問題一定是nginx和php5-fpm處理的服務器
服務器管理員說問題確實是由配置錯誤的 fpm 或 nginx 引起的
如何調試速度下降的原因?
設置:php5.3、mysql5、linux、nginx、php5-fpm
這個問題對於 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,這也可能是問題所在。
@Danack救了我的命。 但是我必須更改命令才能獲取 MASTER_PID:
MASTER_PID=$(ps auwx | grep php-fpm | grep -v grep | grep 'master process' | sed -e 's/ \+/ /g' | cut -d ' ' -f 2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.