0

共有サーバーでホストされている Asp.net アプリケーションがあります。

キャッシュ オブジェクトがほとんどありません。1 つのキャッシュ オブジェクトには、3 つの列を持つ約 100 万のレコードが含まれます。残りのキャッシュ オブジェクトには、数百のレコードのみが含まれます。

すべてのレコードは静的です。これらのレコードは決して変更されず、オートコンプリート ajax 呼び出しで表示されます。

データの保存に Sql Server 2008 を使用しています。

次のように設定した場合:

<compilation debug="false" targetFramework="4.0">   

アプリケーションは、TRUE に設定した場合よりも頻繁に開始されます

私のコード:

 protected void Application_Start(object sender, EventArgs e)
    {

        Global.CacheInfo += "Started on" + "----" + DateTime.Now + "<br/>" + Environment.NewLine; ;


        RegisterRoutes(RouteTable.Routes);

        RouteTable.Routes.RouteExistingFiles = true;

        using (BEntity context = new BEntity())
        {
            // Adding Items to Cache
            BLSuggestion.GetAllTitle();
            BLSuggestion.GetAllSubCategories();

        }

        PerformanceCounter pc = new PerformanceCounter("ASP.NET Applications", "Cache % Machine Memory Limit Used", "__TOTAL__", true);
        Global.CacheInfo += string.Format("{0:0.00}%", pc.NextValue());

    }

アプリケーションを起動すると、この値は約 95% になります。その後、さらにいくつかのキャッシュ オブジェクトが作成されます。それでも、約 1 分後にアプリケーションが再起動されます。

これについての助けは大歓迎です。

4

1 に答える 1

1

特定の (ユーザー定義の) CPU/メモリしきい値に達すると、IIS はアプリケーションを自動的に再起動します。多くの情報をメモリに保存しているため、このしきい値に達したと思います。IIS は、構成で指示されているように AppDomain を単純に削除して、アプリケーションが大量のメモリを消費するのを防ぎます。これは多くの場合、共有ホスティング プロバイダーによって行われます。そのため、アプリケーションを実行するように構成されている制限をプロバイダーに尋ねることができます。

于 2012-06-28T13:29:04.327 に答える