レプリカの再起動が起きているのですが、起きている理由がシステムログから特定できません。

Sho Sakai 0 評価のポイント
2026-04-27T04:13:32.2266667+00:00

リスタート前にメモリが80%になっていることから、メモリが原因の可能性を探っていますが、OOMKilledがログに出力されていないため、メモリが原因という断定ができない状況です。 以下3点ご教示いただけますと幸いです

  • OOMKilledが起きなくても、メモリが原因で再起動する可能性があるか
  • 御社側でリスタートが起きる原因が特定できる場合は原因について
  • リスタートが起きないような構成案
Azure Container Apps
Azure Container Apps

汎用のサーバーレス コンテナー プラットフォームを提供する Azure サービス。


1 件の回答

並べ替え方法: 新しい順
  1. Pravallika KV 18,855 評価のポイント Microsoft 外部スタッフ モデレーター
    2026-04-27T04:16:39.25+00:00

    Hey @sho sakai 、

    メモリが80%近くまで上がっているにもかかわらずログに OOMKilled が出ていないケースでも、実はメモリ不足で再起動している可能性があります。それぞれのご質問についてまとめると以下のようになります。

    1. OOMKilled が出なくてもメモリが原因で再起動するケース
      • Kubernetes のノード側でメモリプレッシャーが発生すると、Kubelet の「Eviction(追い出し)」機能によりコンテナが強制終了されることがあります。この場合、アプリ側のプロセス自体は「OOMKilled」ではなく「Evicted」として扱われたり、システムログに別のメッセージ(kubelet eviction manager 関連)が出力されたりします。
      • Azure Container Apps や App Service on Arc 環境でも、プラットフォーム側で割り当てメモリ以上の使用が疑われるとコンテナを再起動する仕組みが働くことがありますが、必ずしも OOMKilled という文字列が残らない場合があります。
    2. Azure 側で再起動の原因を特定するには
      • 「診断とソルブ (Diagnose and solve problems)」ブレードの Web App Restarted(または App Service on Arc の Restarted ディテクタ)を使うと、再起動のタイムラインと原因候補(ユーザー操作/構成変更/スケーリング/プラットフォームメンテナンス など)が見られます。
      • Log Analytics ワークスペースを使って、システムログ(Kubelet、Container Runtime)とアプリケーションログを横断的にクエリすると、Eviction やコンテナクラッシュの詳細メッセージを確認できます。
      • Azure ポータルのアクティビティ ログで「Update web sites config」などの設定変更イベントを探すと、そのタイミングで自動再起動が走っていないかもチェックできます。
    3. 再起動を抑える構成案
      • Kubernetes リソースの requests/limits を適切に設定し、ノード側のリソース過負荷を防ぐ
      • Horizontal Pod Autoscaler/Cluster Autoscaler の導入により、負荷に応じたスケールアウト/ノード追加を自動化
      • アプリの Liveness Probe や Readiness Probe をチューニングし、起動時間やメモリ消費がピークになるタイミングで誤検知による再起動を防止
      • App Service on Arc であれば Health check 機能を有効化し、準備完了前のトラフィックを別インスタンスへ振り分け
      • 複数インスタンス(レプリカ数)を持たせ、1つのレプリカが落ちてもサービス全体への影響を最小限にする

    参考ドキュメント

    これらをもとにログを再度あたってみて、Eviction イベントやプローブ失敗の痕跡がないか確認してみてください!

    お役に立てば幸いです!


    もしこの解決策が役に立った場合は、User's image をクリックし、「この回答は役に立ちましたか」に対して「はい」をクリックしてください。また、さらにご質問がある場合は、お知らせください。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "推奨" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。