如何调试php-fpm性能?

时间:2014-01-29 15:17:39

标签: nginx php

网页加载速度非常慢,甚至开始发送页面数据需要大约6秒钟,然后在0.2秒内发送,并在0.19秒内生成。

我怀疑它是由php或浏览器引起的,所以问题必须是由nginx和php5-fpm处理的服务器

服务器管理员说确实问题是由错误配置的fpm或nginx引起的

如何调试减速原因?

设置:php5.3,mysql5,linux,nginx,php5-fpm

2 个答案:

答案 0 :(得分: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,这也可能是问题。

答案 1 :(得分:0)

@Danack 救了我的命。 但是我必须更改命令才能获取 MASTER_PID:

MASTER_PID=$(ps auwx | grep php-fpm | grep -v grep | grep 'master process' | sed -e 's/ \+/ /g' | cut -d ' ' -f 2)