2017-01-27 14 views
3

ログファイルのnginxログファイルに誤りがあります。 (編集:「順不同」とは時間順に意味します。たとえば、ログライン2017-02-21 09:13:26は、の前になります。の前に2017-02-21 09:13:45の行)おそらく一定量要求が完了した後に記録され、受信された時点で記録されるのではないため、予期しない順序のレコードが予想される。しかし、これは、小さい静的ファイルのための既知の短い(高速の)要求を含む、順序が乱れるようにログされている要求の数が増えています。おそらくバッファリングされたロギングのために、nginxログの順序が正しくありません。

これはバッファリングされたログを使用することによる既知の副作用ですか、これを改善できますか?ここでは、より完全な画像を取得するための

は、他のいくつかの構成パラメータです:nginx.conf

log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 

仮想ホストの設定ファイルで:

server { 
    #The backlog parameter matches sysctl net.core.somaxconn setting. Default value is 511 on Ubuntu. 
    listen 80 backlog=30000; 
    server_name www.example.com; 
    access_log /var/log/nginx/access.log main buffer=128k; 
    error_log /var/log/nginx/error.log; 
    root /var/www/html/website; 
    ... 
} 
+0

これはなぜ問題なのでしょうか... – cnst

+0

「順不同」とはどういう意味ですか?ログのタイムスタンプは時々後方に移動するのですか、ログに記録されたURLは、あなたが期待していたものと異なる順序で発生しますか?バッファリングは注文に影響を与えるべきではありません。これは、サーバーがメモリに大量のメッセージを蓄積するため、単一の大きな書き込みでログファイルにプッシュできるようになり、個々のメッセージを書き出すよりも効率的です。 – ottomeister

+0

@ottomeister私は、ログファイルが通常であることを期待するように、行が時間順にソートされていないことを意味しました。 – tinkerr

答えて

4

はい、それはバッファリングの問題です。少数の労働者を使用している場合、各労働者には独自のバッファがあります。

改善する方法:

  • 無効にバッファリング
  • 減少バッファサイズ
  • まだ珍しいディスクへ フラッシュは( をソートすると自身のログ収集を作成した場合(1)
  • は、flushオプションを追加nginxはsyslogプロトコルなど)

しかし、通常はログレコードの順序に注意する必要はありません。ログ解析システムは、それを自己でソートします。

(1)Linuxシステムの場合、バッファサイズは、ディスクファイルへのアトミック書き込みのサイズを超えてはいけません。現代のLinuxでは - それは64kです。まあ、私は情報が非常に矛盾するので、このサイズについて100%は確信していません。しかし、もしあなたがログに破線を見つけたら、このサイズを減らしてください。

関連する問題