0

私たちのアプリケーション コードは、環境 Windows Server 2003、iis 6.0 を備えた運用サーバーにデプロイされています。アプリケーションには、絶対有効期限が DateTime.Now.AddMinutes(30) に設定されているキャッシュ コードがあります。HttpContext.Current.Cache オブジェクトを使用しました。

HttpContext.Current.Cache.Add(Scope,objectCache,
                                      null,
                                      DateTime.Now.AddMinutes(30),
                                      Cache.NoSlidingExpiration,
                                      CacheItemPriority.High, LifeStyleEvicted);



private static void LifeStyleEvicted(string key, object value, CacheItemRemovedReason reason)
{
var objectCache = ((IObjectCache)value);
if (objectCache != null) objectCache.DisposeAndClear();
}

したがって、30 分ごとにキャッシュを再起動する必要があります。31 分の初めのすべてのリクエストには、通常よりも少し時間がかかります。しかし、この動作は Windows Server 2003 と IIS 6.0 のすべてでまだ確認されていません。

最近、コードを Windows Server 2008、IIS 7.5 に展開しました。この環境では、31 分の初めに行われたすべてのリクエストに、通常よりも時間がかかりすぎています。

Windows Server 2003 および IIS 6.0 でこの動作が再現されない理由を教えてください。

前もって感謝します。

4

1 に答える 1

0

これの一般的な原因は、アプリケーションのフラッシュ (キャッシュのフラッシュ) または Web プールの再起動です。30 分が経過する前に Web プールが再起動すると、キャッシュがフラッシュされるため、+31 でのスパイクは見られません。

イベント ログをチェックして、.NET エンジンでプロセス リサイクルの原因となる壊滅的なエラーが発生しているかどうかを確認します。また、IIS でリサイクル時間をチェックして、設定が異なっていないことを確認してください。

于 2012-07-06T11:16:42.247 に答える