10

当社は、顧客向けにかなり大規模な (自己作成) ASP.NET Web サイトをホストしています。これは、Web サービス、Web サイト、画像提供 Web サイトで構成され、3 つすべてが独自の仮想ディレクトリにあります。3 つの仮想ディレクトリは、1 つのアプリケーション プールにまとめられています。プールには、両方のメモリー制限 (最大仮想メモリーと最大使用メモリー) が 500 メガバイトに設定されています。

ただし、一度に 1 人のユーザーしかいない場合でも、アプリケーション プールには多くのリサイクルが発生します。イベントログ メッセージには次のように記載されています。

アプリケーション プール 'xxxx' を提供する 'xxxx' のプロセス ID を持つワーカー プロセスは、仮想メモリの制限に達したため、リサイクルを要求しました。

ただし、Process Explorer でワーカー プロセスを観察しても、このメッセージをサポートするものは何も表示されません。両方の設定によって実際に制限されているメモリを観察するには、どのカウンターを監視する必要がありますか?

更新 1

タスク マネージャーでプロセスを観察すると、約 100 MB の「メモリ使用量」と「vm サイズ」が示されますが、プロセスは上記のメッセージと共にリサイクルされます。サーバーで使用可能な 5 GB の物理メモリ...

更新 2

Web サイトはかなり大きいですが、問題はアプリケーションの小さな部分に集中しています。(Oracle を使用して) クエリを実行し、結果をグリッドビューとリピーター Web コントロールにバインドします。結果は、簡単な説明とアイコン (画像提供 Web サイトから読み込まれる) で構成されます。10 回の検索アクションを次々に実行すると、それぞれ 9 件の結果が得られ、ワーク プロセスはメモリ使用量と約 100 MB の VM サイズを示し、リサイクルします...

更新 3 画像提供 Web サイトの使用方法を切り替えても、より良い結果にはなりません。ですから、問題は別のものであると言っても過言ではないと思います。

4

4 に答える 4

2

Dispose()観察として...「画像提供」サイトがたまたまインライン画像処理/生成を行う場合、使い捨てリソース、特にネイティブ機能をラップしているものを呼び出さないことで、すぐにメモリを飲み込むことができます...

これはあなたの質問に対する直接的な回答ではありませんが、メモリの大量使用を引き起こしている根本的な問題を調べるのに役立つかもしれません。

于 2008-12-19T14:39:56.113 に答える
0

これは便利なリンクかもしれません:

http://blogs.msdn.com/tom/archive/2008/06/25/asp-net-tips-finding-what-is-taking-up-memory.aspx

(そして、彼がやっていることの背景を説明する以前の投稿)

于 2008-12-19T14:40:19.047 に答える
-1

Windows タスク マネージャーを使用してみてください。プロセス タブで、[表示] メニューに移動し、[列の選択] を選択します。[仮想メモリ サイズ] 列を選択し、asp.net ワーカー プロセスの値を確認します。

于 2008-12-19T14:36:56.637 に答える