以文本方式查看主題 - 昂捷論壇 (http://www.yzsenyi.com/bbs/index.asp) -- □-技術(shù)研討會 (http://www.yzsenyi.com/bbs/list.asp?boardid=36) ---- ReportServer2008內(nèi)存管理策略 (http://www.yzsenyi.com/bbs/dispbbs.asp?boardid=36&id=8681) |
-- 作者:prcak47 -- 發(fā)布時間:2012/12/31 11:10:51 -- ReportServer2008內(nèi)存管理策略 ReportServer2008內(nèi)存管理策略
Rs2008 在內(nèi)存管理方面已經(jīng)有了很大的改變。主要增加了文件緩存,允許把內(nèi)存數(shù)據(jù)卸載到文件緩存中。 而Rs2005 都是把數(shù)據(jù)放到內(nèi)存中。對于大數(shù)據(jù)量的報表而言,很容易出現(xiàn)OutOfMemory 錯誤。 在實(shí)際應(yīng)用中,發(fā)現(xiàn)Rs2008 也經(jīng)常出現(xiàn) OutOfMemory 錯誤。主要有以下幾個原因: 1 物理內(nèi)存過低。 機(jī)器只有2G內(nèi)存,特別是64位的機(jī)器。 2 同一臺服務(wù)器同時承擔(dān)兩種角色: 數(shù)據(jù)庫服務(wù)器,報表服務(wù)器。但沒有限定數(shù)據(jù)庫服務(wù)器的占用的最大內(nèi)存。 由于數(shù)據(jù)庫通常會采用貪婪的內(nèi)存策略獲取盡可能多的內(nèi)存,導(dǎo)致報表服務(wù)器的內(nèi)存嚴(yán)重不足。 3 報表服務(wù)器默認(rèn)的內(nèi)存管理參數(shù)不適用于有大量報表用戶同時使用的情況。默認(rèn)配置適用于負(fù)載均衡的場景。 如果系統(tǒng)經(jīng)常出現(xiàn)負(fù)載尖峰(某一時刻有大量報表用戶同時使用的情況),則報表服務(wù)器則會從無壓力區(qū)域迅速達(dá)到高壓力區(qū)域。出現(xiàn)OutOfMeory,或者拒絕新的請求(503錯誤,服務(wù)器狀態(tài)不可用)。
為了改善這種情況,需要對報表服務(wù)器內(nèi)存管理策略進(jìn)行調(diào)整。 在 RsReportServer.config配置文件中增加配置。 該文件一般在C:\\Program Files\\Microsoft SQL Server\\MSRS11.MSSQLSERVER\\Reporting Services\\ReportServer目錄下 WorkSetMaxiMum 默認(rèn)為報表服務(wù)器啟動檢測到的最大可用內(nèi)存。 MemoryThreshold 默認(rèn)是 WorkSetMaxiMum 的90% MemorySafetyMargin 默認(rèn)是 WorkSetMaxiMum 的80% WorkingSetMinimum 默認(rèn)是 WorkSetMaxiMum 的60%
通過以上討論,強(qiáng)烈建議 1 手工指定 WorkSetMaxiMum 而不是在報表服務(wù)器啟動是自動檢測。 2 MemorySafetyMargin 改為 50% ,壓縮低內(nèi)存區(qū)域,使系統(tǒng)從容應(yīng)對峰值負(fù)載情況。 WorkingSetMinimum 設(shè)為 WorkSetMaxiMum 25%到 30%
示范:
服務(wù)器同時是報表服務(wù)器和數(shù)據(jù)庫服務(wù)器的情況:
假定內(nèi)存共 24G
Sqlserver最大使用 18G ,1G 給操作系統(tǒng)使用,剩余 5G給報表服務(wù)器。 配置如下:
<MemorySafetyMargin>50</MemorySafetyMargin>
原文地址:http://blog.csdn.net/kxl0358/article/details/6145346 |