0

我有一个托管在共享服务器上的 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 分钟后重新启动。

对此的任何帮助将不胜感激。

4

1 回答 1

1

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

于 2012-06-28T13:29:04.327 回答