zoukankan      html  css  js  c++  java
  • php日志(慢日志和错误日志)

    项目用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
    ————————————————
    原文链接:https://blog.csdn.net/ty_hf/java/article/details/55504172

    前言:
    对于我们做php开发的人员,上了生产环境,一定要把相关debug,display_errors错误提示等关掉。谁还难免不犯个错呢?这样能防止非致命性报错下,导致项目路径、数据库等信息泄漏。
    问:那么问题来了,我们在生产该如何查看php等相关错误呢?
    答:记录到错误日志里。error.log(或直接发送到syslog)

    下边就如何配置和查看日志作出简单叙述。

    一.相关配置
    需要将php.ini中的配置指令做如下修改: 
    1. error_reporting  =  E_ALL             ;将会向PHP报告发生的每个错误   
    2. display_errors = Off                 ;不显示满足上条 指令所定义规则的所有错误报告   
    3. log_errors = On                    ;开启错误日志   
    4. log_errors_max_len = 1024               ;设置每个日志项的最大长度   
    5. error_log = /var/php_errors.log            ;指定产生的 错误报告写入的日志文件位置  
    PHP的配置文件按上面的方式设置完成以后,并重新启动Web服务器。这样,在执行PHP的任何脚本文件时,所产生的所有错误报告都不会在浏览器中显示,而会记录在自己指定的错误日志/usr/local/error.log中。此外,不仅可以记录满足error_reporting所定义规则的所有错误,
    而且还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息。

    二.查看存放地址
    1.通过php.ini来查看错误日志存放地址
    echo '<?php phpinfo(); ?>' | php 2>&1 |grep -i error_log
    或者在一个php文件中输出 phpinfo();查看错误日志存放位置

    2.查看日志存放位置
    vi /etc/php.ini

     

    3.查看日志:
    tail -f -50 /var/php_errors.log


    除了一般的错误输出之外,PHP还允许向系统syslog中发送定制的消息。虽然通过前面介绍的error_log()函数,也可以向syslog中发送定制的消息,但在PHP中为这个特性提供了需要一起使用的4个专用函数。这里就不介绍了。
    ————————————————

    原文链接:https://blog.csdn.net/ty_hf/java/article/details/55505262

  • 相关阅读:
    HTML
    汉企,新的起点
    表格标签
    常用标签
    HTML
    我的未来规划
    世界首富如何炼成? 看盖茨20条箴言
    获取Java项目根目录 N多方法(转载)
    进程间通信——管道
    necessitas
  • 原文地址:https://www.cnblogs.com/guantou1992/p/12777408.html
Copyright © 2011-2022 走看看