日志-php-fpm慢日志查询

本文介绍如何通过配置php-fpm慢日志来检测执行缓慢的PHP脚本,包括配置步骤和解析日志的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目用php开发,在生产运行的过程中,应该一段时间监测下php脚本运行状态,哪些php进程速度太慢,有哪些错误日志。
问:如何来查看检测比较慢的php脚本呢?
答:查看php-fpm慢日志。

1.先查找到配置文件存放地址
find / -name php-fpm.conf


vi /usr/servers/php/etc/php-fpm.conf


打开看看你的慢日志是否开启,或者开启的慢日志存放在哪里。
对应的地址都换成你自己的即可。

2.如果没有开启慢日志查询,先开启

默认的 request_slowlog_timeout 是0,php的慢脚本日志是关闭的,因此设置为大于0的n,表示执行时间超过n的脚本将记录进入slowlog里。
然后监测到网站存在问题的时候查看下slowlog即可发现慢脚本,对脚本进行检查处理即可。

request_slowlog_timeout 和 slowlog需要同时设置,
开启request_slowlog_timeout的同时需要开启 slowlog,
慢日志路径需要手动创建

去掉request_slowlog_timeout 、slowlog的前缀分号';'
设置request_slowlog_timeout =1;
:wq    //保存退出创建慢日志目录
mkdir -p /var/logdata/php-fpm/php-fpm-slowlog.log
killall php-fpm/usr/servers/php/sbin/php-fpm //重启php-fpm


3.找到慢日志存放地址





4.观察慢日志信息

tailf /var/logdata/php-fpm/php-fpm-slowlog.log



开启后,如果有脚本执行超过指定的时间,就会在指定的日志文件中写入类似如下的信息:
[19-Dec-2016 16:54:49] [pool www] pid 18575
script_filename = /home/web/htdocs/sandbox_canglong/test/tt.php
[0x0000000003a00dc8] curl_exec() /home/web/htdocs/sandbox_canglong/test/tt.php:2
[0x0000000003a00cd0] exfilter_curl_get() /home/web/htdocs/sandbox_canglong/test/tt.php:6


日志说明:
script_filename 是入口文件
curl_exec() : 说明是执行这个方法的时候超过执行时间的。
exfilter_curl_get() :说明调用curl_exec()的方法是exfilter_curl_get() 。
每行冒号后面的数字是行号。


开启后,在错误日志文件中也有相关记录。如下:
[19-Dec-2016 15:55:37] WARNING: [pool www] child 18575, script '/home/web/htdocs/sandbox_canglong/test/tt.php' (request: "GET /test/tt.php") executing too slow (1.006222 sec), logging
[19-Dec-2016 15:55:37] NOTICE: child 18575 stopped for tracing
[19-Dec-2016 15:55:37] NOTICE: about to trace 18575
[19-Dec-2016 15:55:37] NOTICE: finished trace of 18575

本文地址:http://blog.csdn.net/ty_hf/article/details/55504172

<think>好的,我现在需要帮助用户解决如何通过apt-get在Ubuntu上安装和配置PHP-FPM的问题。首先,我应该回顾用户提供的引用内容,看看有没有相关的指导。用户引用了四个资料,其中引用1、2、3提到了使用apt-get安装PHP-FPM及其相关扩展,引用4则涉及配置文件的修改和常见错误的解决。 首先,安装部分。根据引用1、2、3,用户需要运行apt-get install命令来安装php5-fpm或者php7.0-fpm,具体版本可能取决于Ubuntu的版本。例如,在Ubuntu16.04中,用户可能安装的是PHP7.0,而更老的系统可能是PHP5。因此,我应该建议用户先更新软件包列表,然后安装合适的PHP-FPM版本。同时,安装必要的扩展,如php5-mysql或php7.0-mysql,这些扩展对于连接数据库是必需的。 接下来是配置部分。引用2和4提到了PHP-FPM的监听方式,可以是Unix套接字或者TCP端口。默认情况下,可能使用套接字文件,但有时可能需要改为TCP端口(如127.0.0.1:9000),特别是在与Nginx配合时。用户需要编辑www.conf文件,修改listen参数,并确保Nginx的配置与之匹配。例如,引用4中的例子显示,将listen从套接字改为9000端口,并调整Nginx的fastcgi_pass指令。 此外,性能调优也是配置的一部分。引用4提到调整pm(进程管理器)的参数,如max_children、start_servers等,以处理更多的请求,避免502错误。用户需要根据服务器资源调整这些值,比如增加max_children和max_requests。 然后,安装扩展方面,用户可能需要安装如php5-gd、php5-curl等扩展,这些可以通过apt-get install命令轻松添加,如引用3所示。安装完成后,需要重启PHP-FPM服务使配置生效。 最后,测试配置和排查错误是关键步骤。用户应检查Nginx和PHP-FPM日志文件,如/var/log/nginx/error.log,以诊断问题,如502错误。引用4中提到的查看php -V输出和日志文件的方法可以帮助用户确认是否存在缺失的模块或配置错误。 现在需要将这些步骤组织成一个清晰的指南,确保用户能够逐步执行安装和配置过程,同时引用相关的参考资料。同时,生成相关问题,帮助用户深入了解PHP-FPM的其他方面,比如性能优化、安全配置和版本差异。</think>### 使用 apt-get 安装和配置 PHP-FPM 的步骤 #### 1. **安装 PHP-FPM** 在 Ubuntu 系统中,通过以下命令安装 PHP-FPM 及常用扩展(以 PHP 7.0 为例): ```bash sudo apt-get update sudo apt-get install php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd ``` - 对于 PHP 5.x,将 `php7.0` 替换为 `php5`[^1][^3]。 - 安装后,PHP-FPM 服务会自动启动。 --- #### 2. **配置 PHP-FPM 监听方式** 默认使用 Unix 套接字文件,位于 `/var/run/php/php7.0-fpm.sock`[^2]。若需改用 TCP 端口(如 9000): - 编辑配置文件: ```bash sudo nano /etc/php/7.0/fpm/pool.d/www.conf ``` - 找到并修改 `listen` 参数: ```ini ;listen = /var/run/php/php7.0-fpm.sock listen = 127.0.0.1:9000 ``` - 保存后重启服务: ```bash sudo systemctl restart php7.0-fpm ``` --- #### 3. **配置 Nginx 与 PHP-FPM 联动** 在 Nginx 的站点配置文件中,设置 `fastcgi_pass` 指向 PHP-FPM 的监听地址: - 若使用套接字: ```nginx fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; ``` - 若使用 TCP 端口: ```nginx fastcgi_pass 127.0.0.1:9000; ``` 修改后重启 Nginx: ```bash sudo systemctl restart nginx ``` --- #### 4. **性能调优** 调整 PHP-FPM 进程管理参数(在 `/etc/php/7.0/fpm/pool.d/www.conf` 中): ```ini pm = dynamic pm.max_children = 50 # 最大子进程数 pm.start_servers = 5 # 启动时子进程数 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pm.max_requests = 1000 # 单个进程处理请求数上限 ``` 修改后重启 PHP-FPM 以生效[^4]。 --- #### 5. **安装其他扩展** 通过 `apt-get` 安装常用扩展: ```bash sudo apt-get install php7.0-mcrypt php7.0-imagick php7.0-zip ``` 重启服务: ```bash sudo systemctl restart php7.0-fpm ``` --- #### 6. **验证与排错** - 检查 PHP-FPM 状态: ```bash systemctl status php7.0-fpm ``` - 查看错误日志: ```bash tail -f /var/log/php7.0-fpm.log ``` - 若出现 502 错误,检查 Nginx 的 `fastcgi_pass` 是否与 PHP-FPM 监听方式一致。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值