【问题标题】:How to test Microsoft Dynamics CRM 2016 Plug_ins with Benchmark如何使用 Benchmark 测试 Microsoft Dynamics CRM 2016 插件
【发布时间】:2017-03-08 17:50:42
【问题描述】:
我正在使用 Dynamics CRM 2016,我已经开发了指定的插件。
在我的第一次测试中,我的进程停留了很长时间,以至于显示了time out exception。
我优化了我的代码,重组了我的插件,而不是我第二次测试。它现在性能更高但我需要一些措施或静态方法。
我被告知要使用 Benchmark,但我找不到任何使用文档。
请帮助我将 Benchmark 集成到我的 Dynamics CRM 2016 流程中,我被困在这里了。
【问题讨论】:
标签:
plugins
performance-testing
execution-time
dynamics-crm-2016
【解决方案1】:
在 CRM 2016 中,当您使用 ITracingService.Trace 时,输出写入 Plugin Trace Log 实体内(在系统设置中激活此功能,实体本身位于设置区域中)。
您可以简单地使用跟踪写一些东西(即Execute方法开头的“START”和结尾的“END”),然后查看(与所有实体一样)具有@的Plugin Trace Log实体987654324@字段。
附带说明一下,当对插件进行基准测试变得可取时,很可能应该让它更快(如果一个插件需要 2 秒才能运行,基准变得无关紧要)
【解决方案2】:
此外,除了 Daryl 所说的之外,请确保您不会一次提取这么多记录,因为每个查询都有最大允许执行时间。
尽可能尝试使用服务器端分页。并将列/属性的数量限制在您实际需要的最小值。
如果您使用的是 OnPrem,则可以使用 SQL 监视器,例如,找出您是否有任何锁、长查询等...
借助一些 SQL 执行计划魔法和一些耐心,您可以改善那里的任何瓶颈,并获得查询执行时间。
现在,如果那是在线 CRM,那么您在是否可以监控方面会受到更多限制。
祝你好运!
【解决方案3】:
不确定 Benchmark 是什么,但您可以使用插件注册工具包在本地调试您的插件,或者您可以添加跟踪语句并提供您自己的时间来确定需要这么长时间的原因。
我最好的猜测是您正在更新实体并更新实体,这反过来又会导致您的插件再次触发,更新实体,这反过来又会导致您的插件再次触发,更新实体...无限循环,然后在 2 分钟后被 CRM 关闭。