我們的乙個reporting service服務上部署了比較多的ssrs報表,其中有乙個系統的ssrs報表部署後,執行時間相對較長,加之**商又在asp.net頁面裡面巢狀了reporting service的報表,使得使用者對報表響應速度非常不滿,於是和幾個同事研究了一番如何定位、優化ssrs報表效能。
案例環境:
作業系統 :windows server 2008 r2 standard sp1
資料庫版本 :sql server 2008 r2 (sp2) - 10.50.4000.0 (x64)
現象描述:
綜合了使用者、開發人員那邊反饋的問題後,發現該ssrs伺服器上部署的其它系統的報表響應速度非常快,測試了其中幾張報表發現基本在1~3秒內,但是這個系統(模組)的ssrs報表全部比較慢,基本上都8秒以上。而且是第一次訪問非常慢,如果重新整理或第二次訪問非常快,但是如果修改報表url引數時,也會非常慢。於是我就其中乙個報表為例,檢視該報表的的執行日誌資訊,如下所示,我們通過executionlog與catalog關聯檢視報表wf_markerroom_report的執行記錄。具體細節可以參考一下
reporting services 執行和跟蹤日誌記錄
。
use [reportserver];
go
select c.name as reportname
,e.reportid as reportid
,e.username as username
,e.format as format
,e.parametersasparameters
,e.timestart as timestart
,e.timeend as timeend
,e.timedataretrieval*1.0/1000 as timedataretrieval
,e.timeprocessing*1.0/1000 as timeprocessing
,e.timerendering*1.0/1000 as timerendering
,datediff(second, timestart, timeend)
as costtime
from reportserver.dbo.executionlog e with(nolock)
innerjoin reportserver.dbo.catalog c with(nolock)on e.reportid = c.itemid
where c.name ='wf_markerroom_report'
and e.timestart > cast('2014-12-25 00:00'as datetime)
and e.timestart <= cast('2014-12-25 12:00'as datetime)
order部分執行結果截圖從上可以看出報表的時間消耗在timedataretrieval上,timedataretrieval是ssrs檢索資料、處理報表以及呈現報表所用的毫秒數(sql裡面,我轉化為秒),於是我們首先懷疑是報表裡面的sql語句效能問題,於是將報表裡面涉及的sql語句、儲存過程全部取出驗證測試,結果測試發現所有sql語句執行時間幾百毫秒,沒有超過1秒, 這個設想與驗證結果有很大出入,於是又懷疑是否因為ssrs報表都是傳入儲存過程引數獲取資料,是否因為「引數嗅探」導致測試結果有差異,於是修改、驗證發現依然測試結果不到一秒。於是可以斷定問題還是出在ssrs上, 以前碰到過因為安全驗證by timestart desc
導致過報表超時的案例,但是除了這個模組ssrs報表依然很慢。其它模組報表速度非常快,如果是安全驗證問題,應該其它報表速度也會有問題。很是納悶,也檢查了很多設定,依然沒有答案。
問題究竟出在**呢?經過一番虐心的仔細對比後,居然發現其它模組的報表,在資料來源設定上使用sql認證的方式連線資料庫,而這個模組使用的windows認證方式訪問資料庫,於是我嘗試將報表的資料來源連線方式改為乙個sql認證的賬號,從 windows authentication using a domain account改為sql authentication
如上所示,測試ssrs報表的速度結果以及timedataretrieval時間讓人吃驚,在官網論壇也有看到討論:performance issue with shared datasources using windows vs sql authentication
應該是使用windows認證方式(windows authentication using a domain account)需要涉及加密、域賬號認證等消耗了不少時間。 當然,由於對ssrs了解不是非常深入,也沒法分析得更深入,在官方文件「效能比較: 安全性設計選擇(構建分布式應用程式)」裡面,我們可以看到
不同的認證方式的response time不一樣。我想ssrs應該也不例外。
2008汶川加油!2008中國加油!!
2008年5月12號下午2點28分,四川省汶川縣發生7.8級特大 突如其來的 在瞬間震碎無數家庭的幸福,乙個個鮮活的生命,剎那間被廢墟所掩埋。四川汶川也成為所有中國人心中之痛!一方有難,八方支援,發生以後,全國火速開始了緊張的救援工作,人民子弟兵火速開往災區第一線,緊急開展救援工作,各地人民紛紛獻愛...
VS2008 ,TFS2008破解序列號
將試用版 90天 變成永久正式版的方法 一 先安裝試用版,然後在 新增或刪除程式 裡找到vs2008,點 更改 刪除 就會看到乙個輸入序列號的地方,把序列號輸進去,點 公升級 按鈕即可,team suite和professional通用。以下是收集的序列號 1.visual studio 2008 ...
選號精靈2008
功能介紹 1 可以完成單號 多號 單級和多級的 選號任務 2 開始後號碼在螢幕上閃動,按空格鍵後停止鎖定號碼,進行公示或確認。再次按空格健繼續下一輪的選號 3 按ctrl q軟體結束執行 4 可以設定參與閃動的資料項 5 可以設定最少閃動時間和最少公示時間,到時後按空格才有效 6 可以設定是否顯示時...