自定义SharePoint页面后的NTLM验证的性能问题
最近在做一项目,发现的一个很奇怪的性能问题。自定义Master Page后,即使什么也不改,比SharePoint默认页面的性能相比,有极大的降低。
测试了一系列场景,诡异的事情就不一一赘述了。
一些典型表现为:
1. IIS Failed Request Log表现为很多大时间(>3s)的页面和页面资源文件,这些看起来都是随机的,无规律的。
其中Log显示以下错误,
- 404错误
- NTLM认证耗费很长时间(>2s)
- 页面和页面资源文件加载时间过长,(>4s)
2. ULS Log表现出来处理时间正常(100ms)左右。
最后找了微软Premier Support,抓了N多Log,Dump,给出了一个神奇的KB。
You are intermittently prompted for credentials or experience time-outs when you connect to Authenticated Services
http://support.microsoft.com/kb/975363
- 启动注册表编辑器。
- 找到以下注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
- 创建以下注册表项:
名称: MaxConcurrentApi
类型: REG_DWORD
值:将该值设置为较大的数字,您测试 (任何编号大于默认值)。 - 在命令提示符下运行 net stop netlogon然后再运行 net start netlogon.
修改并发为40(根据机器性能自己调整)后,压力测试结果有了显著提升。
24Core的安腾,192G内存的机器,居然能够把CPU压到50%多,RPS由40提升到150+,页面响应时间由平均5s降低到1-2秒左右。
微软的作弊工具太神奇了。
另外,为什么默认的页面就不会出现这个问题呢?什么地方有神奇之处?这个还是不解之谜。