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