如何加快ASP.NET应用程序的重启?

时间:2010-01-28 03:12:29

标签: asp.net performance application-pool application-restart

我可以做些什么来确保在触发应用程序/应用程序池重启时,应用程序尽快恢复在线状态?

更好的是,有没有办法在通常的触发器发生时阻止应用程序重启?比如修改web.config,global.asax或machine.config?

5 个答案:

答案 0 :(得分:4)

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

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

小编,网站项目也可以构建,因此您的App_Code将为空,您的bin文件夹将包含一堆.dll(仅使用Build> Build Website)。这肯定会使您对网站的第一次请求更快。我认为网站应用程序的启动速度不会超过预编译的网站项目,但它更容易管理。

答案 1 :(得分:1)

是的,迁移到网络应用会加快重启过程。另一件事是尽可能使你的global.asax干净。

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

重启时间应该快2到3秒左右。但是,我已经看到一些非常复杂的global.asax文件,这些文件设置了一些占用时间长达20秒的域级数据。当然,他们愿意支付这个价格,因为它将正常的页面加载时间从3秒减少到0.1秒。

答案 2 :(得分:0)

主要是,我们使用网站项目,因此我认为切换到Web应用程序项目会加快这一速度,因为所有代码文件都已预编译为.dll。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我遇到了类似的问题,因为我正在运行一个非常高的流量网站,每秒可获得300多个请求。重启至少需要90秒。

当我进行重新启动服务器的更改时,似乎重启停止,直到所有旧请求(其中一些非常长时间运行)关闭。通过手动杀死旧的w3wp.exe实例,我可以更快地完成重启。

是否有某种方法可以强制IIS立即关闭所有连接并重新启动? IIS或asp.net中的一些设置来控制它?