我在共享服务器上托管了一个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分钟后重新启动。
非常感谢任何帮助。
答案 0 :(得分:1)
当达到某些(用户定义的)CPU /内存阈值时,IIS会自动重新启动应用程序。由于您在内存中存储了大量信息,我猜您已达到此阈值,IIS只是按照配置中的说明关闭AppDomain,以防止应用程序占用大量内存。这通常由共享主机提供商完成。因此,您可以询问您的提供商您的应用程序配置为运行的限制是什么。