0

Windows Server 2008 r2 で実行される Web アプリケーションがあります。ページの 1 つは、最初の読み込み時に処理に時間がかかりすぎます。約 15 秒かかり、その後はほぼ瞬時に完了します。このとき、w3wp.exe プロセスが 200 MB 未満の RAM から 700 MB の RAM にジャンプします。それは問題ありません。ページは巨大であり、その量のメモリが必要です。その 15 秒後、約 200 MB の RAM に戻り、誰かがそのページにアクセスすると、ほぼ瞬時にレンダリングされます。誰がリクエストしたかに関係なく、レンダリングするのは初めてです。誰かがページを再度要求すると、しばらくして (数十分ではないにしても数分)、ページは同じことを行います - 処理に 15 秒かかり、700 MB の RAM にジャンプします。

有効期限が切れないように、なんとかして700 MBのキャッシュを保持したい。200 MB の RAM にフォールバックした後でも、ページはすぐに読み込まれますが、それが、より長い期間が経過すると「期限切れ」になり、再度レンダリングする必要があるためだと思います。@outputcache について読んだことがありますが、これが必要かどうかはわかりません。また、キャッシングにはさまざまな種類があります。誰かが私を正しい方向に向けることができますか? 私はメモリ消費などについて心配していません。あまり頻繁に発生しない場合でも、ユーザーがロードするのに15秒待たされることを望んでいません。ありがとう!

PS: ASP.NET 4.0 で C# で記述されたアプリケーション

4

1 に答える 1

1

ページは、アプリケーション プール ( http://msdn.microsoft.com/en-us/library/ms366723(v=vs.100).aspx ) の開始後に最初に呼び出されたときにコンパイルされます。

アイドル状態のアプリケーション プールがシャットダウンするまでの既定のタイムアウトは 20 分です: http://technet.microsoft.com/en-us/library/cc771956(v=ws.10).aspx

アプリケーション プールのシャットダウン後に新しい要求が行われた場合は、アプリケーション プールを再起動し、ページを再度コンパイルする必要があります。

アプリケーションのキャッシングを改善する以外に、次の 2 つのことを行うことができます。

于 2013-02-26T14:37:06.840 に答える