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中的資料雙向同步!!沒想到吧 ^_^