1

Asp.Net 4.0 で実行されている Web サイトでパフォーマンスの問題を調査するには、アドバイスが必要です。

ウェブサイトの背景:

この Web サイトは、e コマース フレームワークに基づいて構築された Web ショップであり、多くのプロジェクトで安定性と信頼性が証明されています。Webshop はかなり長い間 (1 年) 安定して動作していましたが、顧客が ERP (MS Dynamics NAV) を新しいバージョンにアップグレードした後、パフォーマンスの問題がすぐに発生し始めました。

問題自体:

アプリケーション プールは正常に起動しますが、その結果、使用可能なメモリをほぼすべて消費します。したがって、明らかにこれはメモリリークの状況です。

より具体的な例: 昨夜、アプリケーション プールが再起動され、使用メモリは約 500 メガバイトでした。約 16 ~ 18 時間で、プールはすでに約 2 ギガバイトで実行されていました。ほぼすべてのメモリが消費され、アプリケーションが非常に遅くなるまで、プールはさらに拡大し続けます。

アプリケーション プールのメモリ スナップショットは、プールの再起動後と 2 ギグでもPerfViewで取得されました。
スナップショットの差分を以下に添付します。 ヒープ スナップショットが 500Mb と 2Gb の間で異なる

ご覧のとおり、一番上の行はmscrolib!LocalDataStoreHolderです。それについての詳細を開こうとすると、次のような参照元ビューが表示されます LocalDataStoreHolder の参照元ビュー 。そのため、何がメモリを消費しているのか、現時点ではわかりません。
参考になる場合は、RefTree のスクリーンショットを以下に示します。ここでは、強力なハンドルが 92.2% を占めていることがわかります。 RefTree ビュー

質問は、より詳細にドリルダウンする方法について、ヒントやアイデアを提供できる人はいますか? メモリリークの原因を突き止める方法は?

前もって感謝します

編集:RedGate ANTSメモリプロファイルも試しました。これは、ここのさまざまなスレッドで多くのアドバイスを受けています。これは、いくつかのメモリ スナップショットを撮った後の概要図です。最新のスナップショットは 20 時間後に作成され、app-pool は約 3.7 Gb の RAM を消費しています。ご覧のとおり、左側の巨大な赤いチャンクは「管理対象外」で、サイズは 2.5 Gb です。ANTS が言うように、これは CLR 自体、グラフィック データ、または P/Invoke または COM+ を介してアクセスされる管理されていないデータによって使用されます。それでも、より詳細な情報を取得する方法はわかりません。 ここに画像の説明を入力

4

1 に答える 1