.net 4.5 ASP.NET WebAPI アプリケーションがあります。4 CPU の 8 ギガ VM で 1 ワーカーを使用して IIS にデプロイされました。
最近変更を加えました (アップグレードされた ServiceStack.Interfaces、ServiceStack.Common、ServiceStack.Redis、および多数の依存関係)。このアプリがデプロイされている IIS アプリ プールが 1 時間に 1 回 (数分かかるか、または数分かかります) リサイクルされることに気付き始めました。 )。
私のアプリケーション ログには、何らかの問題を示すものは何もありません。Telegraf を使用してメトリクスを収集しますが、メモリ メトリクスの増加はまったく見られません。すべてのメトリクスが完全に正常に見え、アプリ プールがリサイクルされる限りです。
イベント ビューアーを見て、WAS ソースでログをフィルター処理すると、ID 5011 のイベントが表示されます。これは基本的に、IIS ワーカーがクラッシュしたことを意味します。
そこで、DebugDiag を使用して、自分のボックスにアプリを展開したローカル ボックスで実行しました (ローカルで問題を再現できます)。しばらく実行し、最終的にイベント ビューアーで同じイベントを取得しました。DebugDiag からのクラッシュ分析ログを調べたところ、多数の例外がログに記録されているかどうかがわかりましたが、クラッシュの直前に具体的なものは何もありませんでした。
現時点では、クラッシュの原因を突き止めるために他に何ができるか完全にはわかりません。そのため、透明性を高めるためにできることについて、さらに多くの提案があることを願っています。
私が考えているのは、依存関係の 1 つとアップグレードされたパッケージの一部との非互換性があり、例外がスローされ、何も処理されず、IIS ワーカーがクラッシュすることです。
すべての API エンドポイント機能に問題がなく、メモリが増加しておらず、CPU に問題がない限り、私のアプリケーションは完全に正常に動作しています。したがって、私が知る限り、クラッシュまで問題はありません。
クラッシュの原因を見つけたり、それを処理したりするためのトリックを誰かが知っているかどうか疑問に思って、この例外がワーカーをエスケープしてクラッシュするのを防ぎます。