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>

  • 相关阅读:
    css3动画事件 animationend animationiteration animationstart
    dom对象---增加class属性,去除class属性
    数组的indexOf() 方法
    line-height中的五种取值方式和继承
    html 中line-height相关的四种box模型
    真正的能理解CSS中的line-height,height与line-height
    background-size:contain与cover的区别
    激活win10系统
    table-layout:fixed 应用
    js数组fill()方法
  • 原文地址:https://www.cnblogs.com/colder/p/3719227.html
Copyright © 2011-2022 走看看