今天碰到一个问题,我们的网页在早晨的时候打开总是很慢,其它时间有时也比较慢。开始认为是服务器性能的问题,监测服务器资源使用后,发现服务器的资源没有在高水平运行,可以确定不是服务器硬件性能的问题,后来检查日志发现:IIS有定期回收应用程序池的设置,默认是应用程序池闲置(没有请求,没有运算)20分钟后就关闭该应用程序池的进程,释放资源,这样再有客户端请求的情况下,再启动程序,建立进程,这肯定会有延迟。了解了这个设置之后,结合该网站的特点,我就将20分钟设置延长,我设置为0,代表不关闭(该服务器只有两个网站,资源还比较充足,而且每天的访问量也有限)。该设置都是在应用程序池高级设置中修改。
再担心长时间不清空IIS缓存会有问题,就设置了应用程序池在每天夜里4点回收资源,在应用程序池右键正在回收中修改。
这样就解决了白天打开慢的问题,但早晨第一人打开会比较慢,为了早晨第一个人打开网页能快一点,写了个脚本,加在计划任务中,在每天的上班前1小时运行,将该应用程序池激活,脚本如下:
start/bc:\iexplore.ext.lnkhttp://127.0.0.1/:后台打开网页
ping127.0.0.1-n100:等待100秒
taskkillimiexplore.exe:杀死浏览器进程。
因为我是2008的系统,如果是2012的系统,就可以直接用powershell的invoke-webrequesthttp://127.0.0.1命令激活应用程序池,省略了利用浏览器的步骤。