1

asp.net アプリケーションを本番環境で分析しているときに気付いた奇妙な問題について説明し、次の事項についてアドバイスや意見を求めたいと思います。

アプリケーションは通常、80 ~ 90 MB のメモリ フットプリントで実行されます。これまでのところメモリ リークは検出されていないため、これは安定しているように見えます。時間の経過とともにメモリ使用量がわずかに増加することはありません。ただし、アプリケーション プールがリサイクルされると問題が発生します (私は共有ホスティングを使用しており、ログから判断すると、アプリが 20 分間アイドル状態になっているとき、または ~30 時間ごとに発生するなど)。問題は、使用済みメモリがリサイクル時にほぼ 2 倍になることです。説明がなくても 160 ~ 170 MB になります。リサイクルはメモリと他のすべてのリソースをパージする必要があるという一般的な主張があるため、これは紛らわしいです-少なくとも私はそのように理解しています。システムはこの量のメモリを約 7 ~ 8 時間保持した後、メモリ使用量が通常の 90 ~ 100 MB のレベルに低下しますが、明確な理由はありません (少なくとも私にはわかりません)。いつも、アプリケーションはうまく機能しているようです - サイトの可用性に関する重大な遅延や問題はありません - ユーザーにとってはすべて問題ないようで、今のところ苦情は​​ありません. 経時的なメモリ消費量のグラフを見ると、ほぼ階段関数のように見えます。

重要なことは、私のテスト環境ではこの種の動作を再現できなかったことです。ときどき、プロバイダーの管理者から、自分のアプリが許可されているよりも多くのリソースを使用しているというメモを受け取ることがあり、これには本当に悩まされています。

それで、私が知りたいのは、アプリケーションプールのリサイクルがすべてのメモリリソースを解放しないシナリオはありますか? 何に焦点を当てるべきか、アドバイスやガイドラインはありますか? 私はこの分野の専門家ではありませんが、リサイクルの重複、リサイクルに関するシリアライゼーションの問題、さらにいくつかの問題について読んでいます...何かアイデアはありますか? 似たような経験?

ありがとう

4

1 に答える 1

0

この投稿は、サイトのアプリプールがリサイクルされたときに何が起こるかについてのかなり良い概要を提供します:http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost- session-variables-and-appdomain-recycles.aspx

私の推測では、アプリプールのすべてのリサイクルに続くJITコンパイルのために、メモリ使用量が増加しています。私の推測では、共有ホストの構成と環境設定は開発サーバーとは異なります。

私見ですが、共有ホストで最大100メガバイトのメモリを使用している場合、DiscountASP.NETやGoDaddyなどのホストであるかどうかに問題があります。そのWebサイトをまったく気にしない場合は、VPSまたはより高いメモリ制限に対してプレミアムを支払うことができる、より構成可能なホスティングを入手してください。

于 2010-12-14T07:51:52.990 に答える