php-fpmでスローログ構成を有効にする

3741 ワード

転載先
http://www.hiceon.com/topic/how-to-enable-slow-logging-configuration-via-php-fpm-to-detect-slower-php-script-execution/
  • php-fpmスローログslowlog設定は、開発者がどのphpプロセスの速度が遅すぎることによるウェブサイトの問題をよく検索し、開発者が問題の所在を簡単に見つけることができるようにします.この方法は、nginxの500、502の問題の根源を調べるのに同様に適用され、nginxが上記のエラーコードを受信すると、バックエンドphp−fpm解析phpに何らかの問題が発生したと判断することができ、例えば、実行エラー、実行タイムアウトである.
  • php-fpm.confのプロファイルにパラメータrequest_がありますslowlog_timeoutは、
  • と述べている.
    ; The timeout for serving a single request after which a PHP backtrace will be
    ; dumped to the 'slowlog' file. A value of '0s' means 'off'.
    ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
    ; Default Value: 0
    ; request_slowlog_timeout = 0
  • request_slowlog_timeoutが特定の秒に設定された場合request_slowlog_timeout=5は、どのスクリプトの実行時間が5秒より大きい場合、このスクリプトがスローログファイルに記録されるかを示します.
  • request_slowlog_timeout=0はスローログ出力をオフにすることを示します.
  • スローログファイルの場所はphpのインストールディレクトリの下のlogフォルダにデフォルトで、slowlog=log/$poolを変更することができます.log.slowパラメータで指定します.php-fpmスローログの例では、スローログにはプロセス番号、スクリプト名、どのファイルのどの行のコードのどの関数が実行時間が長すぎるかが記録されます.
  • [21-Nov-2013 14:30:38] [pool www] pid 11877
    script_filename = /usr/local/nginx/html/www.quancha.cn/www/fyzb.php
    [0xb70fb88c] file_get_contents() /usr/local/nginx/html/www.quancha.cn/www/fyzb.php:2
    [21-Nov-2013 14:15:23] ERROR: [pool www] 'slowlog' must be specified for use with 'request_slowlog_timeout'
  • request_slowlog_timeoutとslowlogは同時に設定し、request_を開く必要があります.slowlog_timeoutと同時にslowlog
  • を開く必要がある
    [21-Nov-2013 14:16:27] ERROR: Unable to create or open slowlog(/usr/local/php/log/www.log.slow): 
    No such file or directory (2)
  • スローログパスは手動で作成する必要があります.php-fpmスローログステップをオンにします.
  • cd /usr/local/php
    
    vi etc/php-fpm.conf
      request_slowlog_timeout 、slowlog     ';',  request_slowlog_timeout =5;
    :wq
        
           
    mkdir log
      php-fpm
    kill -INT `cat var/run/php-fpm.pid
    sbin/php-fpm
  • 【実際の操作】
  • 1. cd /usr/local/php5/
    2. sed -i.$(date +%F) '/;slowlog/s/;slowlog/slowlog/g' etc/php-fpm.conf
    3. sed -i '/;request_slowlog_timeout = 0/s/;request_slowlog_timeout = 0/request_slowlog_timeout = 5/g' etc/php-fpm.conf
    4. mkdir log
    5.       
       # /usr/local/php5/sbin/php-fpm -t
       [29-Sep-2015 18:58:35] NOTICE: configuration file /usr/local/php5/etc/php-fpm.conf tes   t is successful
    6.     
       #/etc/init.d/php-fpm reload
       Reload service php-fpm  done
    7.     
       [root@movie php5]# ll log/
       total 0
       -rw------- 1 root root 0 Sep 29 18:35 www.log.slow
  • スロークエリログのファイル名はslowlog=log/$poolである.log.slowで指定されています.

  • デフォルトのファイル名は$poolです.log.slow、変数poolはphp-fpmプロファイルで指定できます.
       
    119 ; Pool Definitions ;
    120 ;;;;;;;;;;;;;;;;;;;;
    121 
    122 ; Multiple pools of child processes may be started with different listening
    123 ; ports and different management options.  The name of the pool will be
    124 ; used in logs and stats. There is no limitation on the number of pools which
    125 ; FPM can handle. Your system will tell you anyway :)
    126 
    127 ; Start a new pool named 'www'.
    128 ; the variable $pool can we used in any directive and will be replaced by the
    129 ; pool name ('www' here)
    130 [www]
    130行の[www]を[test]に変更し、スムーズに再起動するとpoolnameがtestになり、新しいログファイルtestが生成する.log.slow
    wKioL1YKeKPScjQ9AAIFs5x8n4k117.jpg
    [root@movie php5]# ll log/
    total 0
    -rw------- 1 root root 0 Sep 29 19:24 test.log.slow
    -rw------- 1 root root 0 Sep 29 18:35 www.log.slow