私のasp.netアプリケーションをプロダクションで分析しているときに気づいた奇妙な問題について説明したいと思います。アプリケーションプールのリサイクル時に奇妙なメモリが増加する
通常、アプリケーションは80-90 MBのメモリフットプリントで動作します。これはこれまでメモリリークが検出されていないので安定しているようです。それでも、アプリケーションプールがリサイクルするときに問題が発生します(共有ホスティングを使用していますが、アプリが20分または30時間ごとにアイドル状態のいずれかでログが発生したと判断します)。問題は、リサイクルで使用されたメモリがほぼ倍増していることです。これは何の説明もなく160-170 MBになります。これは混乱しています。なぜなら、リサイクルがメモリと他のすべてのリソースをパージする必要があるという共通の主張であるからです。システムはこの量のメモリを約7〜8時間保持しています。メモリの使用量は通常のレベル(90〜100MB)に低下しますが、明らかに理由はありません(少なくとも私にはわかりません)。すべての時間、アプリケーションはうまくいくように見えます - ユーザーにとっては、サイトの可用性に大きな遅れやトラブルはなく、すべてのことはOKだと思われます。これまでのところ苦情はありません。時間の経過に伴うメモリ消費量を見ると、ステップ関数のように見えます。
重要なことは、テスト環境でこの種の動作を再現できなかったことです。時々、プロバイダの管理者から、私のアプリで許可されている以上のリソースが使用されているというメモがありました。
私は知りたいことがあります - アプリケーションプールのリサイクルがすべてのメモリリソースを解放しないというシナリオはありますか?私が焦点を当てるべきアドバイスやガイドラインはありますか?私はこの分野の専門家ではありませんが、リサイクルの重複、リサイクルのシリアライゼーションの問題、カップルの問題などについて読んでいます...アイデアはありますか?同様の経験ですか?
おかげ