计划任务重启IIS并自动激活WCF

1.目前存在的问题:

目前VTA存在登录时间太久且不对客户端进行操作就会自动连接超时的问题,此时需要重新登录客户端,或者点击客户端进行操作,客户端会再次发起请求,但是此时给服务端发起请求过程中,也会导致卡顿,极度影响用户体验。

2.存在该问题的原因及目前的处理手段:

(1)问题原因:该问题存在的原因是由于客户端长时间不用,IIS应用程序池有定时回收机制,IIS自动回收相当于服务器IIS重启,应用程序池内存清空,所有数据被清除。

此处的程序池回收有两处设置:

a)   回收——固定时间间隔:固定时间间隔是一个时间段,超过该时间后,应用程序池将回收。如果值为0,则意味着应用程序池不会按固定时间间隔回收。默认为1740分钟,也就是29个小时。

 

b)   进程模式——闲置超时:工作进程关闭之前可以保持闲置状态的时间。如果某个工作进程既未处理请求,也未收到任何新的请求,则将进入简直状态。默认设置是:20分钟。

 

c)   两者区别及关系:固定时间间隔是该服务自动回收的固定时间间隔,默认1740分钟,也就是说IIS启动超过1740分钟后应用程序池就一定会自动回收;闲置超时是程序在运行时,如果长时间闲置不使用的话,会进行回收,以节省服务器资源。两者都是针对IIS回收的设置只是一个是针对服务端一个针对客户端。

(2)目前处理手段:我们目前是暂时将闲置时间调大来解决该问题(目前设置的最大值1740分钟)。

扫描二维码关注公众号,回复: 8395464 查看本文章

(3)目前的处理手段的弊端:

第一,是只解决了闲置超时的问题,时间可以变长,但是过了1740还是会卡顿。

第二,默认回收是1740分钟,也就是29小时。那么29小时后依然会出现自动重启的问题。

第三,如果真的长时间不回收的话,应用程序池一直占用服务器资源,会影响服务器运行。

在快速开发平台服务器端,为了减小数据库负担,内存中暂存了很多信息,不适合频繁的回收,因为回收会造成服务器端所有存在内存中的数据丢失,如果没有及时保存到数据库中,可能导致程序出现问题。而如果系统使用高峰时期,并不适合回收,回收可能导致几十秒IIS无响应,对于正在使用客户端工作的客户人员来说,是一种很不好的体验,会以为是网络或者掉线等问题。因此,基于以上的分析,我们需要设置IIS在指定的时间内定时回收,且回收后,自动将其唤醒,因为WCF第一次启动后,客户端第一次连接服务端会出现卡顿,所以我们需要再客户端第一次连接服务端之前就将其唤醒,避免客户端第一次连接时才主动唤醒WCF。

3.最终处理手段及原理:

目前最便捷的解决办法是做一个计划任务,每天定时重启IIS,并自动激活或者叫做唤醒WCF来解决该问题,我们自动唤醒过后,就不会存在第一次登陆客户端会卡、慢的问题了。

其次,解决IIS自动回收程序池的问题,我们每天让他自动重启一次,不管他的自动回收,每天24小时执行一次,24小时是小于他的固定时间间隔29小时的,以此达到其目的。

4.计划任务创建寄批处理文件:

(1)计划任务创建步骤:

1)打开计划任务程序

 

2)创建基本任务,输入任务名,如:IIS自动重启并激活

 

3)触发器设置开始时间及时间间隔

4)设置启动时间,尽量设置在凌晨,客户不使用的时间段。

 

5)操作选择启动程序:

 

6)启动程序——程序和脚本:点击浏览选择准备好的bat批处理文件,以下是批处理文件内容:

 

 

7)选择批处理文件后点击下一步,点完成。

8)完成后可到任务计划程序库检查是否完成创建:

 

(2)批处理文件解析:

@echo off

start /c"C:\Windows\System32" iisreset.exe    --启动IIS重启程序

ping -n 10 127.1>nul     --IIS重启后,延长10秒,再访问IIS网页

"%programfiles%\Internet Explorer\IEXPLORE.EXE" http://127.0.0.1:81   --访问IIS网页以

exit

注:批处理只支持ANSI编码,如果编码错误,则可能会出现以下错误

“C:\Users\Administrator>锘緻echo off 
‘锘緻echo’ 不是内部或外部命令,也不是可运行的程序 
或批处理文件。”

猜你喜欢

转载自www.cnblogs.com/tan80000/p/12132755.html