2016-04-13 19 views
0

私はいくつかの動的ページを取得するテストページを持つASP.NET Webサイトを持っています。通常、すべての依存関係のための時間をロードすることは非常に高速です: enter image description hereIISの動的コンテンツのランダムな遅延

しかし、時には1または通常よりもはるかに遅いいくつかのページがロード: enter image description here この減速が時間内にランダムにランダムなページのために起こります。テストページをリロードした後は、すべて正常に戻ります。

私は明示的に動的コンテンツキャッシュを使用しませんが、通常はリソースがキャッシュされているようですが、めったに間違っていないようです。

また、StopWatchを入れて動的ページの実行時間を決定します。 web.configをリセットした後初めて、すべてのページが20〜50ミリ秒で実行され、それ以降毎回(このページの読み込みが遅い場合でも)わずか1ミリ秒かかるので、問題はIIS側にあると思います。 次はどうすればいいですか?

仕様:.NET 4.5、Windows Server 2012 R2、IIS 8.5。

ありがとうございます!

UPD: お返事ありがとうございます。このラグの主なバージョンは、アプリケーションプールのリサイクルです。私は、遅れが各2/3ページのリロードごとに起こる(F5を繰り返しクリックすると)ことを言及する必要があります。ほとんどの場合、リサイクルはサーバー上で頻繁に起こることはありません。

+0

探しているものを「ウォームアップ」といいます。これはIIS 7.5以降のモジュールとして利用できます。以前のバージョンでは、アプリケーションの起動時に、たとえばデプロイ後にウォームアップスクリプトを実行する必要がありました。これはホームページを呼び出すような簡単なものでも、ルックアップキャッシュが確保されるようにいくつかのページを表示するものでもかまいません。 –

答えて

0

これは、IISがAppDomainsを処理している可能性があります。 IISはAppDomains内のAppsをホストし、これらのAppDomains内ではJITコンパイラは.NETアプリケーションと同じように動作します。これは、ページ/コントローラが初めて使用されたときにJITがコードをコンパイルするために時間がかかることを意味します。ただし、ローカルの.NETアプリケーションとは異なり、IISはバグ(およびフリーリソース)を防ぐためにAppDomainを保持するApplicationPoolsを時折リサイクルし、ページを再度読み込んだときにアプリケーションを再コンパイルする必要があります。

+0

IISはリソースを節約するためのバグに対する予防策として*アプリケーションプール*をリサイクル*します。 –

+0

メモリリークのバグを考慮するかどうかによって異なります。 :P決して少ない私は私の答えを更新しました。より良い? – Toxantron

+0

問題が実際にリサイクルに関するものであることを確認するために、再生するIIS設定がありますか?たとえば、巨大なタイムアウトを設定し、この問題が再び発生しないことを確認します。 –

関連する問題