簡體   English   中英

如何調試 php-fpm 性能?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM