使用基于声明的身份验证时,与Dynamics CRM Organization.svc通信的.NET Web应用程序受到限制

时间:2019-03-06 17:56:49

标签: performance wcf dynamics-crm dynamics-crm-2016

我们有一个供应商提供的.NET Web应用程序在IIS 8.5(.NET 4.6.1)上运行。它通过WCF Organization.svc与Microsoft Dynamics CRM 2016(内部部署)进行通信。

在进行负载测试时,瓶颈似乎在Web服务器(以下称为“ WFE”)和CRM服务器(托管WCF Organization.svc)之间。 两台服务器上的CPU /内存/磁盘均未显示问题。随着负载的增加,响应时间会变差,CPU /内存/磁盘使用率保持不变。

如果我查看WFE上的IIS-工作进程,则看到对Web应用程序的请求在负载下排队,等待时间长达40-50秒,与此同时,在CRM服务器-IIS-工作进程上,这些请求在那里排队只等到1-2秒。

因此,在开始处理CRM之前,似乎要进行大量的等待。 我尝试过的配置设置:

  • System.net – connectionManagement –增加了WFE和/或CRM machine.config上的maxConnections。
  • System.web – processModel –增加了maxWorkerThreads,maxIoThreads和minWorkerThreads。还有httpRuntime-minFreeThreads和minLocalRequestFreeThreads。是否在WFE和CRM服务器上都这样做
  • 在CRM服务器的web.config – CRMWeb中: System.serviceModel –绑定– netTcpBindings –增加了maxConnections System.serviceModel –行为– serviceBehaviors –行为– serviceThrottling – maxConcurrentCalls,maxConcurrentSessions和maxConcurrentInstances均设置为65536。

这些单独的变化都没有任何明显的不同。服务器上的响应时间和资源使用情况保持不变,因此它们似乎无能为力。

但是,如果我在CRM“ Deployment Manager”中禁用“基于声明的身份验证”,则所有响应时间都会大大提高(快10倍)。

我使用了Fiddler,可以看到Web应用程序仅对ADFS进行了一次身份验证,因此它不会一遍又一遍地进行身份验证。 CRM还具有已设置为True的“ authPersistNonNTLM”。 CRM服务器上的Fiddler显示它从未与ADFS通信。

该Web应用程序使用的是CRM SDK的8.0版,尤其是使用OrganizationServiceProxy类。

感谢您对进一步解决此问题的帮助/见解。

1 个答案:

答案 0 :(得分:0)

事实证明这是一个已知的Microsoft CRM问题: https://www.cobalt.net/2015/01/28/claims-authentication-performance-overhead-in-dynamics-crm/ 哦,好吧!