【问题标题】:.NET Web Application communicating with Dynamics CRM Organization.svc is throttled when using Claims-Based Authentication使用基于声明的身份验证时,.NET Web 应用程序与 Dynamics CRM Organization.svc 通信受到限制
【发布时间】:2019-03-06 17:56:49
【问题描述】:

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

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

如果我查看 IIS - WFE 上的工作进程,我看到我对 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 – behavior – serviceBehaviors – behavior – serviceThrottling – maxConcurrentCalls、maxConcurrentSessions 和 maxConcurrentInstances 都设置为 65536。

这些单独的更改都不会产生任何明显的差异。服务器上的响应时间和资源使用保持不变,因此它们似乎没有做任何事情。

但如果我在 CRM“部署管理器”中禁用“基于声明的身份验证”,所有响应时间都会显着提高(快 10 倍)。

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

Web 应用程序使用 8.0 版的 CRM SDK,并且专门使用了 OrganizationServiceProxy 类。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-13
      • 2014-04-14
      • 2012-10-31
      • 2016-11-05
      • 2013-10-24
      • 2015-03-14
      • 1970-01-01
      • 2012-03-26
      相关资源
      最近更新 更多