使用SharePoint的朋友们应该知道,SharePoint每天夜里有自动回收的机制,使环境每天把占用的内存都释放出来,以确保不会累计占用过多内存导致服务器崩溃。
我们可以打开IIS,选中我们的应用程序池,点击右侧操作里面【正在回收…】,查看该应用程序池的回收条件。
我们可以看到,我这个应用程序池的回收条件是特定时间进行回收,也就是在夜里进行回收,SharePoint默认每个应用程序池的回收条件的特定时间都是不一样的。
当然,有些人可能会考虑设置为基于内存的最大值,这样也不是不可以,但是我们无法确保每次达到最大值的时候就是夜里,如果上午10点用户刚刚要使用系统,或者填写了一半报表的时候,应用程序池自动回收了,后果你懂的。
以上,便是为什么SharePoint会每天夜里自动回收,导致每天早晨第一个打开站点的人,访问速度非常慢的原因了。我们知道原因了,就该想办法解决他,所以,最简单的办法就是预热。无论是模拟web访问也好,或者程序调用也罢,都是合理的办法。
我们这里就简单的介绍下,如何通过在服务器上使用windows任务计划部署PowerShell脚本,来对SharePoint环境进行预热。
特别强调一下,脚本不是笔者开发的,只是GitHub上的开源脚本,大家可以自行去下载脚本使用。
下载脚本,打开https://github.com/spjeff/spbestwarmup地址,也就是下图的模样,找到下载按钮下载就好了。特别强调下,可能是网络原因,我chrome下载失败了,换成IE11就下载下来了,大家注意一下吧。
下载完毕解压,是下图的样子,大家看看就好。
在开始菜单 – windows管理工具下面,找到任务计划程序并打开,如下图:
在任务计划程序库上右键,点击创建任务,如下图:
填写名称和描述,勾选不管用户是否登录都要运行,并勾选使用最高权限运行,配置选择相应的操作系统即可。
在触发器中新建一个触发器,设置为我们需要的配置。
设置触发器为每天裕兴,开始时间为早晨7点钟,同事任务运行的时间超过一个小时则停止,以免影响8点半正常使用,点击确定即可保存触发器。
在操作菜单中创建一个新的操作,也就是这个任务是做什么的。
程序或脚本可以通过浏览进行选择,也可以手动填写都没关系,填写完毕点击确定即可完成新建操作的保存。
- 程序或脚本填写:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- 添加参数填写: -Command “C:\SPBestWarmUp\SPBestWarmUp.ps1”
- 起始于填写:C:\SPBestWarmUp
条件选项默认即可,不需要特别填写。
设置可以按照需要进行修改,也可以不进行修改。
点击确定以后需要输入运行这个任务计划的账号密码,正如下面截图,输入正确的密码点击确定以后,任务计划就创建成功了。
我们可以在创建完毕以后,手动运行一下,看看是否有问题。
我们可以看计划任务的历史记录,任务已完成,就说明任务配置的没有问题。
如果任务计划在设置完,注销登录以后不再执行,记得去本地安全策略里设置一下。执行任务计划的账号,需要有作为批处理作业登陆的设置,加进去就好了。
结束语
以上便是关于SharePoint预热脚本的相关介绍,笔者亲测没有问题,回收应用程序池以后,手动运行计划任务,执行完毕打开页面5秒以内。如果回收应用程序池以后,不执行计划任务,打开页面要10秒以外。
希望本文能够为有需要的人带来帮助,内容浅显,大牛莫喷。