dsqzhaoyue 发表于 2018-12-8 08:45:32

提高 SharePoint 页面访问速度之 IIS 应用池回收

  相信大家都有这样的体会,我们企业内部的 SharePoint 在使用了一段时间之后,都会有访问速度降低,页面访问速度缓慢的问题,除了服务器硬件瓶颈所导致的原因,
  还有一些其他的原因,这些原因从各个层面对SharePoint 造成很多的干扰,今天我们就来说其中的一个,IIS应用池回收。
  SharePoint 在长期的运行过程当中,服务器内存中会存储很多缓存信息,以帮助下次用户访问时能够快速响应,但是这样的日积月累,也使得内存池承受了很大的压力,
  从而形成臃肿的缓存区,那么为了减小服务的负担,IIS应用池回收技术就帮我清除这些臃肿的数据,从而为服务器进行“减重”操作。
  BTW:但是大家要千万注意,IIS应用池回收,其实功能相当于重启了IIS,将应用内存清空,并且清除缓存数据,这样的操作是会造成SharePoint 访问闪断,如果此时正好有用户正在进行数据传输,可能会导致数据丢失,所以操作时一定需要小心,并且找好一个比较合理的时间。
  IIS应用池回收,系统有一个默认的回收时间,为1740分钟,也就是29个小时,我确实不晓得微软为什么设计这么一个时间周期,但是也没办法,生活还是要继续,回收也还是要继续。
  废话不多,直接来吧。
  本文以 Windows Server 2012 R2 为例
  首先打开SharePoint web服务器上的 IIS, 选择到 Application Pools 应用池,找到我们SharePoint 的发布应用,右击,选择高级设置。
http://s3.运维网.com/wyfs02/M01/8D/50/wKioL1iX07LSosZmAAIzVu1lics505.png
  在高级设置里面,我们可以看到有一栏名为“回收”,里面包含了关于回收的选项,
  我们可以看到默认的回收时间间隔为 1740分钟,即29个小时
  注:这里我看过早起的一些博客,都没有提到修改时间这个概念,都说的是通过任务计划脚本来自定义这个时间,但是Win Server 2012 R2这里是可以修改时间的,所以我自己也尝试修改到了 1440分钟(24小时),并选择凌晨来进行回收。
http://s3.运维网.com/wyfs02/M02/8D/50/wKioL1iX07Pzz3B0AAEuIQsEs9w600.png
  点击OK后,我们回到了之前的页面,此时选择 回收 设置
http://s3.运维网.com/wyfs02/M00/8D/53/wKiom1iX07WxQpIRAAKPh3uMHEU391.png
  在这里我们可以设定具体的执行时间和时间周期。我们可以看到,刚才修改的1440也同样在这里生效了。
http://s3.运维网.com/wyfs02/M00/8D/50/wKioL1iX07bDCuakAAEWvz7BLDU321.png
  点击下一步, 勾选需要的回收日志记录选项,确定无误后,点击完成。
http://s3.运维网.com/wyfs02/M01/8D/53/wKiom1iX07fxLFG6AAFIsKte0LI114.png
  这样我们的计划IIS应用池回收就设置好了,当然也可以直接点击 “回收” 按钮来手动立即回收内存(相当于重启IIS,web服务会短时间的重启)
http://s3.运维网.com/wyfs02/M00/8D/50/wKioL1iX07jSGG2EAAIBHNFut4A818.png
  当然了,我也帮大家收集了一个VB脚本的任务计划的方法,设置方便,也可以灵活调整。要通过脚本执行IIS的功能,需要安装 IIS“IIS管理脚本和工具”中的 IIS 脚本工具。
http://s3.运维网.com/wyfs02/M01/8D/50/wKioL1iX07qzhOg0AAKKNHCSPK4197.png
  然后用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.writelinenow&" 应用程序池“"&appPoolName &"”已经回收成功。"
  file.close
  -----------------------------------------------------------------------------------------------------------
  接下来就设定windows 任务计划就可以了。



页: [1]
查看完整版本: 提高 SharePoint 页面访问速度之 IIS 应用池回收