Asp.Net Application继续重启,因此缓存很大

时间:2012-06-28 13:13:16

标签: c# asp.net performance caching

我在共享服务器上托管了一个Asp.net应用程序。

我有很少的缓存对象。一个缓存对象包含大约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分钟后重新启动。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

当达到某些(用户定义的)CPU /内存阈值时,IIS会自动重新启动应用程序。由于您在内存中存储了大量信息,我猜您已达到此阈值,IIS只是按照配置中的说明关闭AppDomain,以防止应用程序占用大量内存。这通常由共享主机提供商完成。因此,您可以询问您的提供商您的应用程序配置为运行的限制是什么。