hirasawa3

Forum Replies Created

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • hirasawa3
    Participant

      hideishiさん

      ご提示いただいた手順で、9.11.4-1を導入しました。
      しばらく様子を見ます。

      ご対応いただき誠にありがとうございました。

      hirasawa3
      Participant

        hideishiさん

        アップデートして正常を確認しました。
        ご対応いただきありがとうございました。

        hirasawa3
        Participant

          hideishiさん

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

          複数profile環境で同様の問題をご認識されていること、また共有サービス全体をrestartする設計上の理由と、Monitでの運用上の限界について理解しました。

          今回の調査では、499を契機としたrestart後に他profileの502/503からrestartが連鎖し、最終的にsystemdのstart-limit-hitに到達していたことまで確認できましたので、当面はMonitをoffにした状態で運用し、必要に応じて監視方法を検討したいと思います。

          また、最初の499/5xxについても、引き続きログを確認してみます。

          詳しくご説明いただき、ありがとうございました。

          hirasawa3
          Participant

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

            Monitの設定について、環境に応じて調整する想定であること、承知しました。

            for 5 cycles then restart を10や20へ増やすことや、if 5 restarts within 5 cycles then unmonitor のrestart回数を減らすことも検討してみます。

            一点、今回の現象について確認させてください。

            今回のログを見る限り、1つのprofileが短時間に何度もrestartを繰り返したというより、

            1. あるprofileで499/5xxを検出
            2. Monitから kusanagi restart
            3. nginx/httpdの再起動中に別profileで502/503が発生
            4. そのprofileのMonitから再度 kusanagi restart
            5. さらに別profileで502/503が発生

            という形で、複数profileからrestartが連鎖しているように見えました。

            各profileのMonit設定では、

            restart program = "/opt/kusanagi/bin/kusanagi restart"

            となっているため、各profileの監視に対するrestartであっても、実際には共有しているnginx/httpd等が再起動されます。

            また、この環境ではnginx/httpdともに、

            StartLimitIntervalUSec=10s
            StartLimitBurst=5

            となっており、実際に短時間のrestart後、

            Start request repeated too quickly.
            Failed with result 'start-limit-hit'.

            となっていました。

            このため、例えば複数のprofileがそれぞれ1回ずつrestartを要求した場合、各profileでは

            if 3 restarts within 5 cycles then unmonitor

            のような条件にまだ達していなくても、共有nginx/httpd側では合計5回を超えてrestartされ、systemdのStartLimitに到達する可能性があるように思います。

            for 5 cycles を10や20に増やせば最初のrestart自体は発生しにくくなると思いますが、一度restartが発生した際のprofile間の502/503によるrestart連鎖についても、この調整で防止できるという理解でよいでしょうか。

            あるいは、複数profileを収容している環境では、各profileのMonitから共有サービス全体の kusanagi restart を実行しないようにするなど、推奨される設定方法がありますでしょうか。

            現在は再発を避けるため、引き続き kusanagi monit off としています。

            よろしくお願いいたします。

            hirasawa3
            Participant

              hideishiさん

              ご確認いただき、ありがとうございました。
              ご対応をよろしくお願いいたします。

              hirasawa3
              Participant

                hideishiさん

                ご回答ありがとうございます。
                確認したところ、/etc/opt/kusanagi/httpd/httpd-with_nginx.conf には
                SetEnvIf X-Forwarded-Proto "^https$" HTTPS
                の記述があり、setenvif_module もロードされています。

                ただし、問題発生時の設定でApache:8000へ直接
                X-Forwarded-Proto: https
                を付与してアクセスしても、RewriteCond %{HTTPS} off によりApache自身からHTTPSへの301が返ることを確認しています。

                Apache公式ドキュメントでは、%{HTTPS} は環境変数ではなくmod_sslを直接参照し、TLSをreverse proxyで終端している場合はbackendで常にoffとなるため、%{HTTP:X-Forwarded-Proto} を確認するよう記載されています。

                SetEnvIf で設定した環境変数をmod_rewriteから参照する場合は %{ENV:HTTPS} になる認識ですが、KUSANAGI側では SetEnvIf ... HTTPS が %{HTTPS} に反映される独自の仕組み等がありますでしょうか。

                念のためご確認いただけますと幸いです。

              Viewing 6 posts - 1 through 6 (of 6 total)