Sharepoint 对象模型执行非常之慢原因
代码开发与测试基本完毕,待将程序部署到正式环境中,遇到的一些情况。
在服务器中将SharePoint、Fast等XX的东西安装好以后,发现服务器执行SharePoint程序或是打开SharePoing管理中心都是灰常的慢,基本要等上十几秒才开始执行程序,但是我们的服务器配置绝对够,而且绝对的高,这个问题出在哪啊,灰常的苦恼。。。
我们采用分布部署的,不同职责的服务或应用部署在不同的服务器中,其中我们有一个Web前端。客户方不希望我们内部服务器能够连通Internet,所以相关的网络运营商仅将我们的Web前端配置Internet(用户其他外部服务交互)。
但是对于反应慢的问题一直苦恼着,并写了一些相关小的工具来测试服务器的运行状况,发现当调用SharePoint应用程序的时候,反映极其的慢,一般需要16秒到25秒之间,包括打开管理中心也是需要等上十几秒(一般打开管理中心都是基于命令来打开的:psconfigui.exe -cmd showcentraladmin),不过发现Web前端来执行小工具却非常之快,莫非与联网有关???
其实问题在于SharePoint使用了“Authenticode”。
所谓Authenticode,是一种Microsoft技术,该技术使用行业标准的加密技术,采用数字证书对应用程序代码进行签名,数字证书用于验证应用程序发行者的真实性。
原来问题是酱紫啊,在刚开始执行相关SharePoint应用程序时,是需要检查CRL的,由于我们大部分服务器都是与Internet互联网不同的,所以他始终验证不了。相关CRL都是在微软的服务器上,则应用程序在执行过程中需要到微软的CRL服务器上进行验证,则等到访问CRL服务器超时了才继续执行下面的代码,则会造成程序反应慢,各种延迟的问题。
一下提供几点简单的解决办法
1、设置相关SharePoint服务器,能够连接到crl.microsoft.com
2、设置Internet选项,来禁止检查CRL
IE --> Internet选项 --> 高级 ,将“检查发行商的证书是否吊销”勾选去掉,保存即可
3、下载相关需要使用的吊销证书,并手动导入到服务器中
certutil -addstore CA "CRL Path"
其中我们服务器需要使用的证书分别有三个
CodeSigPCA,CSPCA,microsoftrootcert
最终解决了以后,服务器执行SharePoint时速度恢复了正常。