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