内存溢出问题,是 Smartbi 系统运维中经常出现的问题。主要原因可能是 JVM 参数配置不正确、Smartbi参数设置不合理、或者并发访问过高等造成的。遇到该问题时,请参考以下诊断步骤。

 

文档目录:

1、信息收集

首先应当通过日志文件分析到底是PermGen还是Heap的内存溢出了。如果是前者则需要修改JVM启动参数(参考3.1说明),如果是后者则通过Smartbi服务器上管理-工具-导出系统日志,打开BOF.SystemProperties.log文件确认服务器MaxMemory是否已经设置正确,InputArguments是否包含-Xmx参数设置。

 

 

2. 问题诊断

当JVM参数已经设置还是会出现Heap内存溢出时,应该首先分析Smartbi参数是否设置正确,可能有影响的参数主要在系统选项中:

  • 查询设置
    • 内存数据库最大返回行数——应该使用默认值1000
  • 业务报表设置
    • 复杂报表数据集上限
    •  复杂报表单元格上限
  • 业务数据缓冲池
    • 最大对象总数
      设定服务器内存中允许持有多少数据缓存,这个值不宜设置过大否则会非常容易造成内存溢出的问题
  • 数据集定义对象池
    • 最大对象总数
  • 业务报表对象池
    • 最大对象总数
  • 复杂报表运行时对象池
    • 最大对象总数
      设定服务器内存中允许有多少复杂报表,要注意必须保证有:复杂报表对象池 *  报表使用数据集个数 < 业务数据缓冲池

当在IBM WebSphere使用Smartbi出现内存溢出时,它会生成一个非常大的phd文件。这个文件可以通过IBM的IBM HeapAnalyzer打开分析。注意服务器使用-Xmx参数设置为5000m时打开这个文件也要同样设置-Xmx5000m,但一般的笔记本、台式机无法申请如此大的内存。因此可能需要通过Xmanager连接到服务器上再打开。