🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # PHP慢脚本日志 间歇性的502,是后端 PHP-FPM 不可用造成的,间歇性的502一般认为是由于 PHP-FPM 进程重启造成的。 在 PHP-FPM 的子进程数目超过的配置中的数量时候,会出现间歇性的502错误,如果在配置中设置了max_requests的话,超过数量也会出现502错误,而max_requests的设置,正是为了防止不安全的第三方library脚本的 内存泄露 ,当然你自己编写的脚本存在 死锁 的话,也会出现502现象。 如果你发现mysql负载并不高,但是php-fpm的进程数和内存占用过高的话,恭喜你,大多数情况下是因为脚本存在死锁。 既然找到了是php的问题,如何去定位php脚本呢? 开启php慢查询日志: ~~~ $ sudo vi /usr/loal/php/etc/php-fpm.conf ; Default Value: 0 request_slowlog_timeout = 1s ; The log file for slow requests ; Default Value: /usr/local/php/log/php-fpm.log.slow slowlog = /usr/local/php/log/php-fpm.log.slow ~~~ 默认的 request_slowlog_timeout 是0,php的慢脚本日志是关闭的,因此设置为大于0的n,表示执行时间超过n的脚本将记录进入slowlog里。 然后监测到网站存在问题的时候查看下slowlog即可发现慢脚本,对脚本进行检查处理即可。 * slowlog 设置慢查询日志的生成目录 * request_slowlog_timeout 设置慢查询的标准时间(打开此配置就相当于开启了慢查询日志),配置以秒为单位,一般设置3s。 # php-error错误日志 一般情况下,php错误日志的配置都在php.ini文件中 * error_log 错误日志的生成目录 * error_reporting 生产环境错误级别应全开 * display_errors 在页面上不显示错误 * log_errors 开启错误日志 最终的结果是 ~~~ error_log = /var/log/php_error.log display_errors = Off error_reporting = E_ALL log_errors = On ~~~ 开发的时候把display_errors设置为On