zoukankan      html  css  js  c++  java
  • Rs2008内存管理策略

    Rs2008 在内存管理方面已经有了很大的改变。主要增加了文件缓存,允许把内存数据卸载到文件缓存中。而Rs2005 都是把数据放到内存中。对于大数据量的报表而言,很容易出现OutOfMemory 错误。

    在实际应用中,发现Rs2008 也经常出现 OutOfMemory 错误。主要有以下几个原因:

    1 物理内存过低。

    机器只有2G内存,特别是64位的机器。

    2 同一台服务器同时承担两种角色: 数据库服务器,报表服务器。但没有限定数据库服务器的占用的最大内存。

    由于数据库通常会采用贪婪的内存策略获取尽可能多的内存,导致报表服务器的内存严重不足。

    3 报表服务器默认的内存管理参数不适用于有大量报表用户同时使用的情况。默认配置适用于负载均衡的场景。

    如果系统经常出现负载尖峰(某一时刻有大量报表用户同时使用的情况),则报表服务器则会从无压力区域迅速达到高压力区域。出现OutOfMeory,或者拒绝新的请求(503错误,服务器状态不可用)。

    为了改善这种情况,需要对报表服务器内存管理策略进行调整。

    在 RsReportServer.config配置文件中增加配置。

    WorkSetMaxiMum 默认为报表服务器启动检测到的最大可用内存。

    MemoryThreshold 默认是 WorkSetMaxiMum  的90%

    MemorySafetyMargin 默认是 WorkSetMaxiMum  的80%

    WorkingSetMinimum  默认是 WorkSetMaxiMum  的60%

    通过以上讨论,强烈建议

    1 手工指定 WorkSetMaxiMum  而不是在报表服务器启动是自动检测。

    MemorySafetyMargin  改为 50% ,压缩低内存区域,使系统从容应对峰值负载情况。

    WorkingSetMinimum   设为 WorkSetMaxiMum   25%到 30%

    示范:

    服务器同时是报表服务器和数据库服务器的情况:

    假定内存共 24G

    Sqlserver最大使用 18G ,1G 给操作系统使用,剩余 5G给报表服务器。

    配置如下:

    <MemorySafetyMargin>50</MemorySafetyMargin>
          <MemoryThreshold>90</MemoryThreshold>
          <WorkingSetMaximum>5000000</WorkingSetMaximum>
          <WorkingSetMinimum>1500000</WorkingSetMinimum>

  • 相关阅读:
    集成学习
    逻辑斯谛回归
    【腾讯】【实习】【笔试】【数据分析师】2018.04.05
    C语言中scanf和printf的用法详解
    寻找一个数组中未出现的最小正整数(数组元素可重复)
    吃鸡问题中的的动态规划
    Coursera 深度学习 吴恩达 deep learning.ai 第三课 结构化机器学习项目 第二周 测试题目 Autonomous driving (case study)
    【转】P问题与NP问题详细解答加举例
    LeetCode 149. Max Points on a Line
    LeetCode 150. Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/colder/p/3719227.html
Copyright © 2011-2022 走看看