日期:2014-05-17  浏览次数:20504 次

asp.net mvc网站回收后第一次运行奇慢,大家是怎么解决的?
有人说是razor文件预编译影响了这个时间,个人没有完全去证实(使用RazorGenerate或者其他可以事先编译razor文件,规避预编译)。

目前有几个预想的解决方案,看看大家有没有更好更优雅的办法呢?

1.使用RazorGenerate编译Razor文件,这个弊端一是所有cshtml文件都要去修改属性配置,不知道还有没有其他需要改动的,嫌麻烦,而且不知道是不是团队里所有人都得装这个东西。弊端二是把修改即可见的路子堵死了。

2.修改固定回收时间和进程空闲超时时间都为43200(分钟),也就是30天。这样的话30天才有一个人中奖,总比天天有人中奖好多了(原来是29个小时回收一次)。但是不知道服务器扛不扛得住。

3.方案2的衍生版,固定回收时间设置为0,人为去回收,回收完自己点开一次。

4.第一次奇慢,之后速度特别快,也就是说第一次做了之后访问没有做的事(预编译?)。能不能把这个动作找到,在每次回收/进程消亡/32%@#$(也就是系统进行了某些动作,会产生预编译行为,在进行这些动作之后紧接着我们先把这个预编译给搞了)。不知是否有人实现过这类配置。

5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。
------解决方案--------------------
可以固定回收时间到半夜,应用程序池可以修改的。
------解决方案--------------------
启动速度真心没办法解决
------解决方案--------------------
引用:
5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。


简单有时候是最好的。

没有必要29小时才去访问一次。10分钟去一次也可以,也不会对它增加半点可见的负载,反而是访问价值很高。
------解决方案--------------------
你可以试试这个IIS模块:Application Initialization Module for IIS 7.5
------解决方案--------------------
个人觉得 这是可以接受的.

要是实在不忍接受,那就预编译吧.
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。


简单有时候是最好的。

没有必要29小时才去访问一次。10分钟去一次也可以,也不会对它增加半点可见的负载,反而是访问价值很高。

结合一楼的所说,可以半夜3点回收,然后写个服务半夜3点15访问一次。进程空闲超时设置为24小时。

这个可以
------解决方案--------------------
.NET的程序,不止WEB,第一次运行都比较慢
------解决方案--------------------
IIS一般都设在半夜2-5点左右回收这时访问量最少
------解决方案--------------------
引用:
Quote: 引用:

你可以试试这个IIS模块:Application Initialization Module for IIS 7.5

看到dudu也说到了这个
感觉很对症  我安装个试一下先

这个是不是只对IIS7.5和之后的版本有效呢

iis8内置了
------解决方案--------------------
我本地测试,好像除了重启设备,没有发现回收会出现第一次访问慢的情况

你看看你的web.config是否有配置
<compilation debug="true">
<assemblies>
<add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.DirectoryServices.Protocols, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
&