相信大家都有这样的体会,我们企业内部的 SharePoint 在使用了一段时间之后,都会有访问速度降低,页面访问速度缓慢的问题,除了服务器硬件瓶颈所导致的原因,
还有一些其他的原因,这些原因从各个层面对SharePoint 造成很多的干扰,今天我们就来说其中的一个,IIS应用池回收。
SharePoint 在长期的运行过程当中,服务器内存中会存储很多缓存信息,以帮助下次用户访问时能够快速响应,但是这样的日积月累,也使得内存池承受了很大的压力,
从而形成臃肿的缓存区,那么为了减小服务的负担,IIS应用池回收技术就帮我清除这些臃肿的数据,从而为服务器进行“减重”操作。
BTW:但是大家要千万注意,IIS应用池回收,其实功能相当于重启了IIS,将应用内存清空,并且清除缓存数据,这样的操作是会造成SharePoint 访问闪断,如果此时正好有用户正在进行数据传输,可能会导致数据丢失,所以操作时一定需要小心,并且找好一个比较合理的时间。
IIS应用池回收,系统有一个默认的回收时间,为1740分钟,也就是29个小时,我确实不晓得微软为什么设计这么一个时间周期,但是也没办法,生活还是要继续,回收也还是要继续。
废话不多,直接来吧。
本文以 Windows Server 2012 R2 为例
首先打开SharePoint web服务器上的 IIS, 选择到 Application Pools 应用池,找到我们SharePoint 的发布应用,右击,选择高级设置。
在高级设置里面,我们可以看到有一栏名为“回收”,里面包含了关于回收的选项,
我们可以看到默认的回收时间间隔为 1740分钟,即29个小时
注:这里我看过早起的一些博客,都没有提到修改时间这个概念,都说的是通过任务计划脚本来自定义这个时间,但是Win Server 2012 R2这里是可以修改时间的,所以我自己也尝试修改到了 1440分钟(24小时),并选择凌晨来进行回收。
点击OK后,我们回到了之前的页面,此时选择 回收 设置
在这里我们可以设定具体的执行时间和时间周期。我们可以看到,刚才修改的1440也同样在这里生效了。
点击下一步, 勾选需要的回收日志记录选项,确定无误后,点击完成。
这样我们的计划IIS应用池回收就设置好了,当然也可以直接点击 “回收” 按钮来手动立即回收内存(相当于重启IIS,web服务会短时间的重启)
当然了,我也帮大家收集了一个VB脚本的任务计划的方法,设置方便,也可以灵活调整。要通过脚本执行IIS的功能,需要安装 IIS“IIS管理脚本和工具”中的 IIS 脚本工具。
然后用vbs脚本及批处理文件,结合任务计划程序,保证在每周六深夜1点执行IIS回收。
Recyclepool.vbs 文件内容:
-------------------------------------------------------------------------------------------------------------
appPoolName = WScript.Arguments(0)
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration")
Set oAppPool = oWebAdmin.Get("ApplicationPool.Name=‘" + appPoolName + "‘")
oAppPool.Recycle
set fso=createobject("scripting.filesystemobject")
if (fso.fileexists("d:\appPool\recycleIISPool.log")) then
‘1-forreading,2-forwriting,8-appending
set file=fso.opentextfile("d:\appPool\recycleIISPool.log",8,ture)
else
set file=fso.createtextfile( "d:\appPool\recycleIISPool.log",8,ture)
end if
‘write(x)写入x个字符,writeline写入换行,writeblanklines(n)写入N个空行
file.writeline now&" 应用程序池“"&appPoolName &"”已经回收成功。"
file.close
-----------------------------------------------------------------------------------------------------------
接下来就设定windows 任务计划就可以了。