【发布时间】: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