如何Recycle一个SharePoint Web Application,以及为什么
当你发现SharePoint服务器的CPU或者内存使用率居高不下的时候,很多人都会选择iisreset来让资源使用率降下来。但是在企业环境中,这毫无疑问会使这台服务器中断服务从而影响到用户的使用,所以我更推荐在iisreset之前一定要先试一下去Recycle那个资源使用率较高的web application。
那么Recycle和iisreset相比好处在哪呢?
简单的说,当我们recycle一个web application时,它并不会停止对用户的服务。它是这样工作的,你在IIS Manager里点下recycle那个按钮以后,Application Pool会为这个web application创建一个新的实例,然后由这个新实例对所有新访问进来的用户提供服务,而旧的实例将继续完成自己正在提供的服务,直到用户退出后这个实例才会停止服务然后销毁。
有时候你会发现即使recycle了,资源使用率依然降不下来,可能的原因很多,比如数据库的查询被死锁或者卡住了。如果这样的话,这个旧的实例可能永远也销毁不了,那么这时候你就只能做iisreset了。
如何找出使用资源最多的web application并recycle它
1. 任务管理器 -> 进程标签页 -> 按内存使用率排序
(Task Manager -> Process tab -> Sort by Memory)
这时候你会看到排第一位的是个w3wp.exe, 你知道那就是个web application的进程,但却不一定知道它是哪个web application,尤其当你的SharePoint有很多web application在运行的情况下。
2. 在任务管理器的菜单栏选择试图,然后点“选择字段”,然后在弹出的页面里勾中PID并点击OK确认
(Click drop down list View -> choose Select Columns, in the popped-up window, check PID(Process Identifier) and click OK)
3. 现在你可以看到这个资源占用率最大的进程的PID是多少了,在本文的截图例子中,它是12460
4. 打开IIS管理器,在左侧栏中单击服务器名,然后在中间栏里双击Worker Processes
5. 在Worker Processes页面里你可以看到12460对应的web application名XXX
6. 回到IIS Manager页面,选中XXX并点击Recycle