質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

Nginxのログが記録されなくなる

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,171

score 189

EC2のサーバーインスタンス上に、Nginx + puma + Rails の環境構築を行い、
ファイルサーバー(数GBのディレクトリのzip圧縮 → ダウンロード)のための
システムを運用しています。

Nginxの再起動直後などは、特に問題がないのですが、しばらくすると
アクセスログ・エラーログ共に0バイトのまま記録されなくなってしまいます。

原因や、可能性のありそうな確認ポイントなど、
ご存知でしたら、ご教示いただけないでしょうか。

よろしくお願い申し上げます。

# ls -lha /var/log/nginx/
合計 132K
drwx------  2 nginx nginx 4.0K  8月  9 03:13 .
drwxr-xr-x 10 root  root  4.0K  9月  9 03:33 ..
-rw-r--r--  1 admin nginx    0  8月  9 03:13 access.log
-rw-r--r--  1 admin nginx 1.2K  4月 12 02:24 access.log-20190412.gz
-rw-r--r--  1 admin nginx 3.6K  4月 13 03:10 access.log-20190413.gz
-rw-r--r--  1 admin nginx 4.7K  4月 19 02:59 access.log-20190419.gz
-rw-r--r--  1 admin nginx 5.6K  5月 11 02:31 access.log-20190511.gz
-rw-r--r--  1 admin nginx 5.7K  6月 11 02:51 access.log-20190611.gz
-rw-r--r--  1 admin nginx 6.2K  6月 13 03:25 access.log-20190613.gz
-rw-r--r--  1 admin nginx 9.5K  6月 15 03:11 access.log-20190615.gz
-rw-r--r--  1 admin nginx 4.4K  6月 18 02:40 access.log-20190618.gz
-rw-r--r--  1 admin nginx  13K  8月  6 03:39 access.log-20190806.gz
-rw-r--r--  1 admin nginx 3.5K  8月  9 02:20 access.log-20190809.gz
-rw-r--r--  1 admin nginx    0  8月  9 03:13 error.log
-rw-r--r--  1 admin nginx  159  4月 10 03:27 error.log-20190411.gz
-rw-r--r--  1 admin nginx  159  4月 12 03:08 error.log-20190413.gz
-rw-r--r--  1 admin nginx 1.1K  4月 18 10:56 error.log-20190419.gz
-rw-r--r--  1 admin nginx  156  5月 11 03:36 error.log-20190512.gz
-rw-r--r--  1 admin nginx 1.1K  6月 10 14:57 error.log-20190611.gz
-rw-r--r--  1 admin nginx 1.1K  6月 12 18:59 error.log-20190613.gz
-rw-r--r--  1 admin nginx 1.5K  6月 14 20:41 error.log-20190615.gz
-rw-r--r--  1 admin nginx  667  6月 17 19:21 error.log-20190618.gz
-rw-r--r--  1 admin nginx 5.4K  8月  6 03:39 error.log-20190806.gz
-rw-r--r--  1 admin nginx  804  8月  8 19:16 error.log-20190809.gz


 
追記: Nginxのログローテート設定です。

/var/log/nginx/*log {
    create 0644 nginx nginx
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}


 
 
[質問1] Nginxのプロセスが2つも動いているのはおかしいでしょうか?
[質問2] Max open files になっているのが原因っぽいですが、Nginxのログすら出力されなくなってしまうのでしょうか?

# ps ax | grep nginx | grep worker
 4427 ?        S      0:00 nginx: worker process
 4428 ?        S      0:26 nginx: worker process
# cat /proc/4427/limits | grep 'open files'
Max open files            1024                 4096                 files     
# cat /proc/4428/limits | grep 'open files'
Max open files            1024                 4096                 files   
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

postrotate が正しく実行されていないか、compress のタイミングが悪いのかもしれません。

postrotate について

/run/nginx.pid ファイルが存在し、Nginx の master プロセスの PID になっていますでしょうか?
また、lsof -p (NginxのプロセスID) | grep access.log で、実際に open しているログファイル名を確認ください。
ローテートされた古いログファイル名になっていないでしょうか。

compress について

logrotate の設定で、compress に加え delaycompress を設定すると、うまくいきませんでしょうか?

ご質問について

[質問1] Nginxのプロセスが2つも動いているのはおかしいでしょうか?

設定によります。
worker_processes  2; と設定しているのですよね?

[質問2] Max open files になっているのが原因っぽいですが、Nginxのログすら出力されなくなってしまうのでしょうか?

それは、ulimit の項目と Soft Limit, Hard Limit の設定値を表示しているだけで、制限を越えていることを示すものではありません。
実際に制限を越えたのであれば、OS のログまたは Nginx のログにその旨出力されると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ログローテートの後から、ログファイルに追記されてないような感じですね。

ログローテート時のログには、何かメッセージが記録されていたりしないでしょうか?

また、ログディレクトリの所有者、パーミッションとログファイルの所有者、パーミッションの関係も気になります。

nginx のユーザーやログローテートの設定はどのようになっていますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/09 13:10

    ご回答ありがとうございます。

    access.log-20190809.gz を確認しましたところ、確かに 09/Aug/2019:02:20:45 +0900 までログが残っていたので、ログローテートが絡んでいる(ログローテートの後から〜)という可能性は高そうですね。。

    取り急ぎ、質問欄にログローテートの設定を追記させていただきました。
    ログローテート時のログとは、Nginxのログでしょうか?ログローテートも実行ログを吐いているのでしょうか?

    所有者やパーミッションについてですが、再起動するとしばらくは書き出されるというところも気になっています。(全く出ない訳ではない)
    ので、このあたりも絡んでいるのかな?と気にはなっています...
    http://www.1x1.jp/blog/2013/02/nginx_too_many_open_files_error.html

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る