Dynamics CRM Performance Issue when CRM Forms Opening
事情发生在Dynamics CRM 8.2.2版本,客户新升级到这个版本几个月的时间。
突然有一天,客户反映为什么我们打开CRM Form页面的时候loading的时间这么长呢?大概会需要5-15分钟呢!并且每一个user的加载时间还不一样 >_<
我第一个反映就是,最近我们没更新环境啊,为什么突然会出现这个问题呢,一定是微软的bug,哼哼。
但冷静下来细想一下,还是需要提供一些东西的,比如如何证明是微软的bug?对此经过一系列推理、诊断、Google后,大概定位了一个方向RecentlyViewedXml的缓存。
或者也可能是网络问题?再或者也可能是DB性能问题?
对于以上几点猜测,于是总结了以下几点检查条件:
1、 让加载慢的User浏览器中输入https://CRMUrl/tools/diagnostics/diag.aspx,点击Run,等待测试结果,这个是对于网络延迟、带宽的诊断
2、 同样让加载慢的User打开加载慢的Entity Form,比如Case,加载完成后按CTRL+Shift+Q,弹出页面中点击Enable后刷新页面,页面再次加载完成后CTRL+Shift+Q,最后Create CSV Report
3、 收集CRM Trace log,为了后续根据CSV中的耗时多的RequestID查Log中对应的SQL之类信息
4、 最后Disable #2打开的form
5、 对于RecentlyViewedXml引起的问题诊断,可以通过浏览器中输入https://CRMUrl/api/data/v8.2/userentityuisettingsset?$ filter=_owninguser_value eq <user guid> and objecttypecode eq <entity object type code>,结果应该只返回5-10个,只看结果个数应该诊断不出来
6、 如果 #5 速度很慢,需要清理DB以及浏览器的local storage,只清一个地方不管用,这俩地方是互相同步的
最后问题的确是由于RecentlyViewedXml导致。这东西是在这里使用的:

从DB看了一下它里面到底存的什么,呵呵,一个大的xml,存了好多东西,每次读取更新,结果真的好惊喜,反正如果是我,我决定不会这么做。
好吧,既然定位了问题所在,接下来就好解决了。
啊,忘记说了,这个RecentlyViewed是UserEntityUISettings表的一个字段。
由于客户CRM DB我们没办法连接,所以通过WebAPI将这个字段内容按照客户需要的过滤条件删掉就可以了。
随便说一嘴,只有自己(包含admin也不可以)才能删除自己的RecentlyViewed数据。
然后删除完之后记得清一下本地浏览器的localstorage缓存,localstorage会跟DB中的数据双向同步!!没想到吧 ^_^

Dynamics CRM Performance Issue when CRM Forms Opening的更多相关文章
- Dynamics CRM项目实例之八:CRM 2015的产品系列,克隆,修订
关注本人微信和易信公众号: 微软动态CRM专家罗勇,回复139或者20150106可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 今天的博客主要是关于D ...
- 介绍Dynamics 365 Performance Center
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复257或者20170517可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- Java高级项目实战之CRM系统01:CRM系统概念和分类、企业项目开发流程
1. CRM系统介绍 CRM系统即客户关系管理系统, 顾名思义就是管理公司与客户之间的关系. 是一种以"客户关系一对一理论"为基础,旨在改善企业与客户之间关系的新型管理机制.客户关 ...
- Dynamics CRM 2011 2013-(An error occurred while opening mailbox xxx@xx.com Microsoft.Crm.Tools.Email.Providers.)
An error occurred while opening mailbox Microsoft.Crm.Tools.Email.Providers. Whenever I check how C ...
- Dynamices CRM Permission Issue (Security role UI to privilege mapping)'s solution
select * from privilege where privilegeid = 'a4736385-9763-4a64-a44b-cd5933edc631' Security role UI ...
- Dynamics CRM安装教程九(续):自建证书的CRM项目客户端设置CRM访问
配置完IFD之后就可以为客户端电脑配置访问CRM了首先到CA证书服务器中把证书下载下来,打开CA服务器的浏览器,输入地址http://stg-ad/certsrv/ 其中stg-ad是机器名之后点击下 ...
- How To Tune or Test PLSQL Code Performance in Oracle D2k Forms
You can test or tune your program unit performance in Oracle forms with Ora_Prof package.Suppose you ...
- 通用型CRM还是行业型CRM?-定制为王
大数据时代,怎样利用工具摆脱繁杂的数据管理之苦,洞察有价值的销售信息,是每一个管理者的迫切须要.Zoho CRM问世10年来,见证了一个个行业客户怎样在CRM帮助下实现了效率和业绩提升.相同,广泛的 ...
- After 2 years, I have finally solved my "Slow Hyper-V Guest Network Performance" issue. I am ecstatic.
Edit - It should be known that I was initially researching this issue back in 2012 and the solution ...
随机推荐
- 注解实现SpringCache自定义失效时间
注解实现SpringCache自定义失效时间 SpringCache是一个很方便的缓存框架,但是官方提供的缓存的配置只有全局的缓存失效时间,没有针对某个命名空间做配置,因为工作上业务的关系需要针对某一 ...
- jreble备注
版本:2019.1.4 激活URL:http://jrebel.pyjuan.com/36931214-7bb6-42d4-afd7-26eb5628e004
- Clear Writer v1.8 更新
拖更了这么久之后,Clear Writer 诈尸啦(bushi 下载链接:https://linhongping.lanzous.com/ikF2Udmf7if Clear Writer v1.8 更 ...
- Mybatis源码手记-从缓存体系看责任链派发模式与循环依赖企业级实践
一.缓存总览 Mybatis在设计上处处都有用到的缓存,而且Mybatis的缓存体系设计上遵循单一职责.开闭原则.高度解耦.及其精巧,充分的将缓存分层,其独到之处可以套用到很多类似的业务上.这里将主要 ...
- map集合 可变对象
#map集合 可变对象 stu = {'xiaoming':34,'xiaohogn':56,'小王':569} print(stu['小王']) ''' 如果key不存在,dict就会报错: > ...
- 从零开始的Spring Boot(6、Thymeleaf内置对象及表达式大全)
1.1 基础对象 #ctx:上下文对象 ${#ctx.locale} ${#ctx.variableNames} ${#ctx.request} ${#ctx.response} ${#ctx.ses ...
- python基础内容整理(一)
基本数据类型 字符串 String 字符串是不可变类型 字符串的分割: s.split(sep)以给定的sep为分隔符对s进行分割. In [4]: s = "hello world&quo ...
- VMware历史版本下载【1.0~3.0】
前提:此为走HTTP协议的FTP伺服器,而且有直到Vmware3.0[之后就没了]的版本 link:http://linux.mathematik.tu-darmstadt.de/pub/linux/ ...
- 005.OpenShift访问控制-权限-角色
一 Kubetcl namespace 1.1 namespace描述 Kubernetes namespace提供了将一组相关资源组合在一起的机制.在Red Hat OpenShift容器平台中,p ...
- Nginx 如何自定义变量?
之前的两篇文章 Nginx 变量介绍以及利用 Nginx 变量做防盗链 讲的是 Nginx 有哪些变量以及一个常见的应用.那么如此灵活的 Nginx 怎么能不支持自定义变量呢,今天的文章就来说一下自定 ...