我们正在努力解决使用Windows身份validation的ASP.NET MVC网站的性能问题。
当用户进行身份validation时,响应时间非常缓慢。 此外,每次从浏览器发送授权头时,响应时间都会增加很多秒。 对于执行的文件和静态内容(如CSS和JS)都会发生同样的问题。
对应用程序的访问仅限于特定angular色中的用户,我们现在计划允许所有经过身份validation的用户访问静态文件,以查看是否有帮助。
正在使用的身份validation方法是NTLM。
我们应该如何进一步明确为什么authentication会大大降低性能?
这个问题很难弄清楚。 经过相当一段时间的调查后,我们发现它是零星的,并不总是存在的。
我们使用nltest /dclist:<domain_name>域名nltest /dclist:<domain_name>来获取客户环境中所有域控制器的完整列表,发现他们有13个。 通过使用nltest /dsgetdc:<domain_name >,我们可以看到每当服务器挂接到主域控制器(PDC)时,由于DC上的高stream量/负载,身份validation速度很慢。 每当应用程序使用其他12个域控制器之一,该网站是好的。
我们可以通过针对特定DC执行LDAP查找来重现此问题。由于应用程序正在进行大量的LDAP查找以及对除PDC之外的DC进行硬编码,可能会有所帮助,但会导致出现单点故障情况。
解决的办法是指定一个单独的网站,其中两个区域办事处将为上述申请和其他区域提供服务