上一篇文章中我们提到了IIS应用池的预加载功能,今天来讲一下W3WP的进程数优化。

上文中我们提到了W3WP这个进程,这个进程其实就是用户在访问SharePoint时候的一个服务进程载体,我们可以把用户访问一个网站的过程,想象成一个顾客到酒店办理入住的过程,IIS应用程序池有个最大的连接数,默认是1000,就是说一个池子里面最多可以接受1000个用户来连接,第1001个访问网站的人将提示无法访问。还有一个是队列长度,默认情况下,一个用户访问网站,会由一个W3WP进程来和他交互,W3WP进程你可以理解成酒店的前台人员,由他来帮助用户办理入住业务。队列长度就可以理解为排队长度,只有一个一个的办理,这样才能够正常有序的进行下去,无论后面对少人排队,都得一个一个来。

但是一个应用池,其实是可以对应多个W3WP进程的,就会有多个前台接待员来帮助用户办理入住,也就是会有多个进程来协助处理交互请求,来为用户提供服务,这样就自然而然的提升了网站的访问效率。

针对SharePoint的应用池,我们建议大家主要是针对80端口的主站点池,多启用几个W3WP就够了,在池子里面找工作进程数,建议从2个开始设置,如果内存和CPU充足的话,可以设置成4个。

默认情况下池子和W3WP是一一对应的,我们自己可以改成一对多。这个最大工作进程数,同样我们在IIS应用程序池高级设置里面可以找到,如下图。

提高 SharePoint 页面访问速度之增加W3WP进程数及重置回收_第1张图片

具体启用多少个进程数,这个根据大家内存的占用率来看,日常工作中如果内存已经很高了,这里的数值也不要设置的太高,可以先设置成2个来看一看效果,随后酌情递加。

这里还要给大家提一点,默认情况下,应用程序池会有一个空闲回收的操作,20分钟之内,如果没人访问这个池子,没人来出发,也会回收。

所以我们在这里可以通过下面两个参数进行更改,建议大家讲空闲超时操作改为终止,闲时超时时间设置长一些,比如12个小时没人访问,再进行终止操作。

提高 SharePoint 页面访问速度之增加W3WP进程数及重置回收_第2张图片

最后再来给大家分享一个IIS里面的最后一个需要优化的内容-----IIS重置回收

什么是重置回收呢?简单来讲,就是一个味了防止池子回收,用户访问出现中断,默认情况下 session和内存状态都存在池子里面,这是为了减轻SQL的负担,但是随之也带来了一个问题,既然Session在池子里面,池子回收了,池子都重启了,那我们用户的Session怎么办呢?如果用户正在进行很重要或者紧急的连接呢,这个过程是不允许被中断的,如果池子回收了,连接也断了,不是就完蛋了么?

“重置回收”就是我们需要的一个选项,只要我们开启了重置回收之后,就能实现一种效果,当池子要回收的时候,会自动在启动一个进程来接管当前用户的请求,Session也会一起转载过去,确保用户不会因为网站的回收而断开连接。如果不开启这个重置回收的选项,那么当发生应用池回收的时候,用户的Session一定会断掉。

有些做开发应用的同学应该知道这个,Session一般很有讲究,甚至有时候会单独部署一台Session Server来存放Session,不把Session放到内存里面,目的就是为了防止此类事件的发生而给用户带来的困扰。

大家可以在应用池的高级选项中找到这个重置回收选项,英文版的用户一定要记得“负负得正”哟!

提高 SharePoint 页面访问速度之增加W3WP进程数及重置回收_第3张图片

如果存在严重依赖Session的应用程序,一定要开启这个设置。这个设置不仅限于提供给SharePoint哈,一切和IIS相关的连接应用都有效。

其实SharePoint还好,在多服务器场中的SharePoint是共享Session机制,几台前端Web Server共享Session, 即使一台掉了, Session还是可以在其他机器上面找到。但是也不排除一种极端情况,就是多台前端Web服务器在同一时间点都在做回收操作,如果是这样,那么这个Session也会断掉,所以处于保险起见,开一下重置回收并没有坏处。

但是如果是 All IN ONE 单台部署的小伙伴就要注意了,这个选项十分的重要哈!