如何加快ASP.NET应用程序的重新启动速度?

问题描述:

我应该怎么做才能确保当应用程序/应用程序池重新启动时,应用程序会尽快恢复联机状态?如何加快ASP.NET应用程序的重新启动速度?

更好的是,有没有办法来防止应用程序重新启动时,通常的触发器发生?像修改web.config,global.asax或machine.config?

ASP.NET 4.0中会有一个“自动启动”功能(Scott Guthrie talks about it),但现在不会对您有所帮助。

请确保您的网站/应用程序的应用程序池正在运行,不会自动进入“睡眠”状态。 20分钟无效后,默认应用程序池被设置为关闭。我记得这不会使网站重建,但使第一个请求显着变慢。

小记,网站项目也可以构建,所以你的App_Code将是空的,你的bin文件夹将包含一堆.dll(只需使用Build> Build Website)。这绝对会让您的网站的第一个请求更快。我不认为网站应用程序的启动速度比预编译的网站项目快,但它更容易管理。

+0

是的,我确实在4.0中设置了新功能。但是,我不知道这是否会加快速度,它只会确保应用程序已准备就绪。但实际启动时间可能会相同。 关于应用程序池关闭...我不确定是否要删除该应用程序池。如果没有人使用它,我仍然希望关闭应用程序,因为我们有多个站点在同一台服务器上运行。但我明白你的观点。 你确定一个网站项目可以像这样“建造”吗?你的意思是发表? – 2010-02-19 15:20:14

主要是,我们使用网站项目,所以我认为切换到web应用程序项目会加快这一点,因为所有的代码文件都被预编译成.dll。

当使用网站项目,我认为移动App_Code文件的文件到外部类库也将加快速度,因为代码将被预编译。

是的,转移到网络应用程序将加速重新启动过程。要做的另一件事是让你的global.asax尽可能干净。

即使使用网络应用程序,如果修改了这些配置文件中的任何一个,或者bin目录中的程序集发生更改,网站也会重新启动。你不能阻止这一点。

重新启动时间应该在2到3秒内相当快。但是,我看到一些非常复杂的global.asax文件,它们设置了一些需要长达20秒的域级数据。当然,他们愿意付出这样的代价,因为它将一些正常的页面加载时间从3秒缩短到了0.1秒。

对于Web应用程序项目,可以使用Web部署项目(VS2010 download link)将该站点预编译为类似于网站项目的DLL。请参阅ScottGu article on how to use WDPs

我有一个类似的问题,我正在运行一个非常高的流量网站,得到一个很好的300+请求/秒。重新启动至少需要90秒。

当我做出重新启动服务器的更改时,似乎重新启动失败,直到所有旧请求(其中一些很长时间运行)都关闭。我可以通过手动杀死旧的w3wp.exe实例来使重启发生得更快。

是否有某种方法可以强制IIS立即关闭所有连接并执行硬重启?在IIS或asp.net的一些设置来控制这个?

+0

你应该问这是一个单独的问题,并会得到一些很好的答案! – 2014-10-16 14:27:52

+0

完成!它是:http://*.com/questions/28053268/how-to-get-fast-asp-net-application-restart-recycle-on-high-traffic-site – 2015-01-20 19:06:54