目前有几个预想的解决方案,看看大家有没有更好更优雅的办法呢?
1.使用RazorGenerate编译Razor文件,这个弊端一是所有cshtml文件都要去修改属性配置,不知道还有没有其他需要改动的,嫌麻烦,而且不知道是不是团队里所有人都得装这个东西。弊端二是把修改即可见的路子堵死了。
2.修改固定回收时间和进程空闲超时时间都为43200(分钟),也就是30天。这样的话30天才有一个人中奖,总比天天有人中奖好多了(原来是29个小时回收一次)。但是不知道服务器扛不扛得住。
3.方案2的衍生版,固定回收时间设置为0,人为去回收,回收完自己点开一次。
4.第一次奇慢,之后速度特别快,也就是说第一次做了之后访问没有做的事(预编译?)。能不能把这个动作找到,在每次回收/进程消亡/32%@#$(也就是系统进行了某些动作,会产生预编译行为,在进行这些动作之后紧接着我们先把这个预编译给搞了)。不知是否有人实现过这类配置。
5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。
16 个解决方案
#1
可以固定回收时间到半夜,应用程序池可以修改的。
#2
启动速度真心没办法解决
#3
简单有时候是最好的。
没有必要29小时才去访问一次。10分钟去一次也可以,也不会对它增加半点可见的负载,反而是访问价值很高。
#4
结合一楼的所说,可以半夜3点回收,然后写个服务半夜3点15访问一次。进程空闲超时设置为24小时。
#6
个人觉得 这是可以接受的.
要是实在不忍接受,那就预编译吧.
要是实在不忍接受,那就预编译吧.
#7
5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。
简单有时候是最好的。
没有必要29小时才去访问一次。10分钟去一次也可以,也不会对它增加半点可见的负载,反而是访问价值很高。
结合一楼的所说,可以半夜3点回收,然后写个服务半夜3点15访问一次。进程空闲超时设置为24小时。
这个可以
#8
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
#9
.NET的程序,不止WEB,第一次运行都比较慢
#10
IIS一般都设在半夜2-5点左右回收这时访问量最少
#11
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
#12
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
嗯。刚刚在win server 2012 + iis8上测试成功了。
win7+iis7.5测试发现不好使啊,装了微软提供的那个扩展之后又重启,windows添加删除功能那里IIS下面依然不见“应用程序初始化”这一项。
IIS应用程序-高级设置里面也没有“启用预加载”这一项。
#13
我本地测试,好像除了重启设备,没有发现回收会出现第一次访问慢的情况
你看看你的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"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
你看看你的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"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
#14
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
嗯。刚刚在win server 2012 + iis8上测试成功了。
win7+iis7.5测试发现不好使啊,装了微软提供的那个扩展之后又重启,windows添加删除功能那里IIS下面依然不见“应用程序初始化”这一项。
IIS应用程序-高级设置里面也没有“启用预加载”这一项。
要在iis7.5里进行可视化操作的话需要另一个插件
http://files.dotblogs.com.tw/jaigi/1306/2013619347830.zip
#15
我本地测试,好像除了重启设备,没有发现回收会出现第一次访问慢的情况
你看看你的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"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
依旧如故
项目中有很多cshtml文件,怀疑是因此导致的
cshtml页面中默认引入了一些namespace,去掉非系统的引用,也还是这样,又排除了这一项。
#16
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
嗯。刚刚在win server 2012 + iis8上测试成功了。
win7+iis7.5测试发现不好使啊,装了微软提供的那个扩展之后又重启,windows添加删除功能那里IIS下面依然不见“应用程序初始化”这一项。
IIS应用程序-高级设置里面也没有“启用预加载”这一项。
要在iis7.5里进行可视化操作的话需要另一个插件
http://files.dotblogs.com.tw/jaigi/1306/2013619347830.zip
装了再重启还是不好使啊0.0 是我搞的方式不对吗。
7.5就先不搞了,因为目前服务器是IIS8。
修改的配置如下:
应用程序池-高级设置-启动模式:AlwaysRunning
应用程序池-高级设置-进程模型-闲置超时:1740 (分钟)
应用程序-高级设置-常规-预加载已启用:True
改了这三处,目前看来是没问题。先结贴了。
#1
可以固定回收时间到半夜,应用程序池可以修改的。
#2
启动速度真心没办法解决
#3
5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。
简单有时候是最好的。
没有必要29小时才去访问一次。10分钟去一次也可以,也不会对它增加半点可见的负载,反而是访问价值很高。
#4
5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。
简单有时候是最好的。
没有必要29小时才去访问一次。10分钟去一次也可以,也不会对它增加半点可见的负载,反而是访问价值很高。
结合一楼的所说,可以半夜3点回收,然后写个服务半夜3点15访问一次。进程空闲超时设置为24小时。
#5
你可以试试这个IIS模块:
Application Initialization Module for IIS 7.5
#6
个人觉得 这是可以接受的.
要是实在不忍接受,那就预编译吧.
要是实在不忍接受,那就预编译吧.
#7
5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。
简单有时候是最好的。
没有必要29小时才去访问一次。10分钟去一次也可以,也不会对它增加半点可见的负载,反而是访问价值很高。
结合一楼的所说,可以半夜3点回收,然后写个服务半夜3点15访问一次。进程空闲超时设置为24小时。
这个可以
#8
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
#9
.NET的程序,不止WEB,第一次运行都比较慢
#10
IIS一般都设在半夜2-5点左右回收这时访问量最少
#11
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
#12
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
嗯。刚刚在win server 2012 + iis8上测试成功了。
win7+iis7.5测试发现不好使啊,装了微软提供的那个扩展之后又重启,windows添加删除功能那里IIS下面依然不见“应用程序初始化”这一项。
IIS应用程序-高级设置里面也没有“启用预加载”这一项。
#13
我本地测试,好像除了重启设备,没有发现回收会出现第一次访问慢的情况
你看看你的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"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
你看看你的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"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
#14
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
嗯。刚刚在win server 2012 + iis8上测试成功了。
win7+iis7.5测试发现不好使啊,装了微软提供的那个扩展之后又重启,windows添加删除功能那里IIS下面依然不见“应用程序初始化”这一项。
IIS应用程序-高级设置里面也没有“启用预加载”这一项。
要在iis7.5里进行可视化操作的话需要另一个插件
http://files.dotblogs.com.tw/jaigi/1306/2013619347830.zip
#15
我本地测试,好像除了重启设备,没有发现回收会出现第一次访问慢的情况
你看看你的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"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
依旧如故
项目中有很多cshtml文件,怀疑是因此导致的
cshtml页面中默认引入了一些namespace,去掉非系统的引用,也还是这样,又排除了这一项。
#16
你可以试试这个IIS模块: Application Initialization Module for IIS 7.5
看到dudu也说到了这个
感觉很对症 我安装个试一下先
这个是不是只对IIS7.5和之后的版本有效呢
iis8内置了
嗯。刚刚在win server 2012 + iis8上测试成功了。
win7+iis7.5测试发现不好使啊,装了微软提供的那个扩展之后又重启,windows添加删除功能那里IIS下面依然不见“应用程序初始化”这一项。
IIS应用程序-高级设置里面也没有“启用预加载”这一项。
要在iis7.5里进行可视化操作的话需要另一个插件
http://files.dotblogs.com.tw/jaigi/1306/2013619347830.zip
装了再重启还是不好使啊0.0 是我搞的方式不对吗。
7.5就先不搞了,因为目前服务器是IIS8。
修改的配置如下:
应用程序池-高级设置-启动模式:AlwaysRunning
应用程序池-高级设置-进程模型-闲置超时:1740 (分钟)
应用程序-高级设置-常规-预加载已启用:True
改了这三处,目前看来是没问题。先结贴了。