php-慢日志

apache+php的环境没有这个功能,必须是nginx+php-fpm环境中

点击打开链接https://www.cnblogs.com/joshua317/p/5534684.html

点击打开链接http://blog.51cto.com/8838848/1609917

众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题。作为mysql的好搭档,php也有这样的功能。如果你使用php-fpm来管理php的话,你可以通过如下选项开启。

启用慢日志的方法

vi /usr/local/php/etc/php-fpm.conf
确保有用,记得重启下服务器

PHP 5.3.3 之前设置如下:

<value name="request_slowlog_timeout">5s</value>
< value name="slowlog">logs/php-fpm-slowlog.log</value>

PHP 5.3.3 之后设置以下如下:

request_terminate_timeout = 30s
request_slowlog_timeout = 5s
slowlog = /usr/local/php/log/php-fpm-slowlog.log

说明:

request_terminate_timeout 将执行时间太长的进程直接终止
request_slowlog_timeout 是脚本超过多长时间 就可以记录到日志文件
slowlog 是日志文件的路径

开启后,如果有脚本执行超过指定的时间,就会在指定的日志文件中写入类似如下的信息:

[19-Dec-2013 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-2013 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-2013 15:55:37] NOTICE: child 18575 stopped for tracing
 [19-Dec-2013 15:55:37] NOTICE: about to trace 18575
 [19-Dec-2013 15:55:37] NOTICE: finished trace of 18575


间歇性的502,是后端 PHP-FPM 不可用造成的,间歇性的502一般认为是由于 PHP-FPM 进程重启造成的。

在 PHP-FPM 的子进程数目超过的配置中的数量时候,会出现间歇性的502错误,如果在配置中设置了max_requests的话,超过数量也会出现502错误,而max_requests的设置,正是为了防止不安全的第三方library脚本的 内存泄露 ,当然你自己编写的脚本存在 死锁 的话,也会出现502现象。

如果你发现mysql负载并不高,但是php-fpm的进程数和内存占用过高的话,恭喜你,大多数情况下是因为脚本存在死锁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP-FPM(FastCGI Process Manager)是一个用于管理 PHP FastCGI 进程的工具,它可以提高 PHP 应用程序的性能和稳定性。下面是 PHP-FPM 配置文件的详细解释: 1. `listen`:指定 PHP-FPM 监听的地址和端口号,可以是 IP 地址、Unix 套接字文件路径或者端口号。例如:`listen = 127.0.0.1:9000` 或 `listen = /var/run/php-fpm.sock`。 2. `user` 和 `group`:指定 PHP-FPM 进程运行的用户和用户组。例如:`user = www-data` 和 `group = www-data`。 3. `pm`:指定 PHP-FPM 的进程管理方式,可以是 `static`、`dynamic` 或者 `ondemand`。其中,`static` 表示静态进程数,`dynamic` 表示动态进程数,`ondemand` 表示按需生成进程。例如:`pm = dynamic`。 4. `pm.max_children`:指定 PHP-FPM 动态进程模式下最大子进程数。例如:`pm.max_children = 50`。 5. `pm.start_servers`:指定 PHP-FPM 动态进程模式下启动时的子进程数。例如:`pm.start_servers = 5`。 6. `pm.min_spare_servers` 和 `pm.max_spare_servers`:指定 PHP-FPM 动态进程模式下空闲进程的最小和最大数量。例如:`pm.min_spare_servers = 2` 和 `pm.max_spare_servers = 10`。 7. `pm.process_idle_timeout`:指定 PHP-FPM 进程空闲超时时间。例如:`pm.process_idle_timeout = 10s`。 8. `pm.max_requests`:指定 PHP-FPM 进程处理的最大请求数,达到该数量后进程将被重启。例如:`pm.max_requests = 500`。 9. `access.log` 和 `slowlog`:分别指定 PHP-FPM 访问日志日志的路径。例如:`access.log = /var/log/php-fpm/access.log` 和 `slowlog = /var/log/php-fpm/slow.log`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值