sharepoint site performance

分析了您之前提供的在CPU使用率高的时候抓取的w3wp进程的dump,以下是一些发现:

  • 在抓取dump文件的这个时刻,.Net的垃圾回收正在运行,在内存资源紧张时,.Net会自动启动内存垃圾回收机制,释放内存资源以供程序使用。由于垃圾回收过程需要占用较多CPU资源,这就是这段时间CPU使用率较高的原因。
  • 在这个w3wp进程使用的内存中,绝大部分都被PermissionCollection结构体占用,这个结构体是用来记录SharePoint站点中各个项目对应的权限,因此如果我们SharePoint站点中有很多独立权限的项目,这些结构体会占用较大的内存空间。有关这个结构体中的内容,您可以参考msdn文章:http://msdn.microsoft.com/en-us/library/permissions.permissions.getpermissioncollection(v=office.12).aspx
  • 在抓取dump文件的时刻,您的环境中应该有爬网正在进行,我们看到了w3wp进程中有类似如下http请求:http://apps.westrac.com.cn:80/_vti_bin/sitedata.asmx,这个Web Service请求是由爬网程序发出的,爬网程序通过这个Web Service获取 SharePoint站点中的内容以及与这些内容对应的权限,所以以上提到的PermissionCollection在多数情况下是由sitedata.asmx这个Web Service在处理爬网请求时产生的。

因此,您之前观察到的CPU和内存使用率间歇性增高的问题,与您环境中的爬网有一定关系。建议您在考虑Jinkui之前提出的减少独立权限数量和列表项目数量的同时,尽量不要把SharePoint爬网设置在高峰时间启动,以免影响SharePoint服务器的整体性能。

数据库查询语句执行时间的长短是由很多因素综合决定的,根据我们对日志的分析,更新新环境SharePoint内容数据库中两个表的统计信息并重置索引,可以较有效的提高查询速度。请您在新升级的SQL Server数据库中执行以下命令,请确定WTC_App_Center_Content是您访问慢网站使用的内容数据库:

use WTC_App_Center_Content;

go

UPDATE STATISTICS AllUserData WITH FULLSCAN

UPDATE STATISTICS AllDocs WITH FULLSCAN

ALTER INDEX ALL ON AllUserData REBUILD

ALTER INDEX ALL ON AllDocs REBUILD

由于执行这个命令时会对数据库产品性能影响,请您最好的非工作时间执行,根据数据库中数据量的大小,这个命令可能会执行较长时间。

如果我们在调整了爬网排程,更新了数据库中的统计信息后,发现新环境还是明显慢于老环境,我们可以继续抓取SQL Server的PSSDiag日志,进一步分析还有没有提升查询速度的空间。结合之前的分析,导致您环境中SharePoint访问慢的根本原因是当前站点中有独立权限项目的数量太多,导致SQL Server中的查询语句需要较多时间返回。所以这个问题的根本解决方法是根据我们官方文档中的推荐配置对您站点的内容做适当调整,具体可以参考JianKui之前的邮件。

原文地址:https://www.cnblogs.com/hqbird/p/4044688.html