1. 概述编辑
1.1 版本
报表服务器版本 | 功能变更 |
---|---|
11.0 | - |
11.0.3 | 新增支持一键配置 |
1.2 应用场景
如果内存环境配置不合理,非常容易导致报表系统宕机,且此类宕机情况很难复现,排查困难。
1.3 功能简介
「系统检查」,可帮助用户检查系统中的各项配置是否合理,以辅助用户优化环境配置,更好地防止宕机情况的发生。
用户手动检查/平台定期检测报表系统各项环境配置是否合理
当系统环境配置不合理时,推送消息给用户
为用户提供系统环境配置的合理改进指导
本文将简单介绍系统检查功能的检查逻辑和检查项。
注1:若无法检测出当前配置,当前配置为空,修改意见为「暂不支持此项」,点击状态后面的「详情」,即可查看具体原因。
注2:若所有检查项均没有问题时,会提示:当前系统运行良好,无需调整。
注3:若系统为集群环境,在「系统检查」页面左上角可选择具体的集群节点进行检测。
2. 内存检测项编辑
内存检测项的检测逻辑如下表所示:
序号 | 检查项 | 检查内容 | 检查结果 | 改进建议 |
---|---|---|---|---|
1 | 单机多进程 | 检测报表工程所在的系统中,除报表进程外的其他进程,占用的内存是否大于总物理内存的1/8 | 若不大于总物理内存的1/8,则该项检查合格,进入第 2 项检查 | - |
若大于总物理内存的1/8,则认为该系统为单机多进程系统,系统稳定性较差,存在宕机隐患,且无法进行后续的合理推荐,结束检测流程 | 当前系统疑似为多进程,存在宕机隐患,建议仅保留报表工程并合理配置相关参数。 建议关闭系统中其他无用进程,仅保留报表工程相关的进程。 | |||
2 | 垃圾回收器 | 检测虚拟机垃圾回收器是否为ParallelScavenge | 垃圾回收器类型为ParallelScavenge,则该项检查合格,进入第 3 项检查 | - |
垃圾回收器类型不是ParallelScavenge,提示修改,并跳转至第 6 项检查 | 建议JVM使用垃圾回收器类型为 ParallelScavenge 请参考 2.1 节配置垃圾回收器类型 | |||
3 | 堆内内存推荐值 | 由于存在云端运维数据中 GC 不够14天、GC 数据异常等问题,会导致无法计算出准确的系统堆内内存推荐值,所以需要判断是否存在推荐值 | 系统存在堆内内存推荐值,则该项检查合格,进入第 4 项检查 | - |
系统存在堆内内存推荐值,生成提示,并跳转至第 6 项检查 | 系统运行数据不足,暂时无法进行配置推荐 | |||
4 | 堆内内存 | 只有在当前堆内存不够用时才会针对防止内存溢出的宕机进行推荐,所以需要先检测当前系统的堆内内存是否小于系统堆内内存推荐值 | 若堆内内存当前值小于推荐值,则该项检查合格,进入第 5 项检查 | - |
若堆内内存当前值大于推荐值,则跳转至第 6 项检查 | - | |||
5 | 物理内存-推荐堆内存 | 单机单进程下,整个物理机内存=堆内存推荐值+堆外NIO所需内存+堆外fineIO所需内存+预留内存,预留内存暂时定为 1/4 物理内存 | 若检测出「当前物理内存-推荐堆内存-5G」≥「1/4物理内存」,生成提示,并跳转至第 7 项检查 | 推荐当前系统的堆内内存增加到系统推荐的堆内内存 请参考 2.2 节配置堆内内存 |
若检测出「当前物理内存-推荐堆内存-5G」<「1/4物理内存」,生成提示,且无法进行后续的合理推荐,结束检测流程 | 建议物理内存增加至「(推荐的堆内内存+5G)*4/3*4」以上的值 请增大物理内存 | |||
6 | 物理内存-当前配置堆内存 | 在无堆内存推荐值(GC日志不足、GC日志不准确、非PS垃圾回收器几种情况下均无堆内存推荐值)、堆内存推荐值不大于当前对内存设置值时,暂时无法准确判断出当前系统不发生堆内溢出的堆内存用量,所以无法对堆内存做用量推荐,只能对堆外的内存模型进行检测和配置建议 | 若检测出「当前物理内存-当前配置堆内存-5G」≥「1/4物理内存」,说明当前内存配置在配置好规定的堆外内存后即可消除堆外内存宕机风险,则该项检查合格,进入第 4 项检查 | - |
若检测出「当前物理内存-当前配置堆内存-5G」<「1/4物理内存」,无法判定是xmx配置过大还是物理内存较小,只能生成提示,且无法进行后续的合理推荐,结束检测流程 | 当前系统内存配置不合理,存在宕机风险,建议检查后修改相关配置 请参考 2.2 节调小堆内内存,请增大物理内存 | |||
7 | 堆外NIO内存 | 检测堆外内存设置大小是否超过2G | 若当前堆外内存未超过2G,则该项检查合格,进入第 8 项检查 | |
若当前堆外内存超过了2G/未配置堆外内存,则生成提示,并跳转至第 8 项检查 | 建议堆外内存(Maxdirectmemory)设置为2G 请参考 2.3 节修改堆外内存 | |||
8 | 堆外FineIO内存 | 检测fineIO读内存(-Dfineio.read_mem_limit)参数配置大小是否超过2G 检测fineIO写内存(-Dfineio.write_mem_limit)参数配置大小是否超过1G | 若当前fineIO读内存未超过2G,当前fineIO写内存未超过1G,则该项检查合格,结束检测流程 | - |
若当前fineIO读内存超过了2G,或当前fineIO写内存超过了1G,则生成提示,结束检测流程 | 建议JVM FineIO读内存为2g,写内存为1g 请参考 2.4 节修改 fineIO读内存 请参考 2.5 节修改 fineIO写内存 |
2.1 修改垃圾回收器类型
本节以工程部署在 Tomcat 上为例, 介绍设置垃圾收集器为Parallel Scavenge(并行收集器)的方法。
Windows 系统:打开%Tomcat%/bin目录下的catalina.bat文件进行配置,配置完成后重启工程即可生效。
set JAVA_OPTS= -XX:+UseParallelGC
Linux:打开%Tomcat%/bin目录下的catalina.sh文件进行配置,配置完成后重启工程即可生效。
JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelGC"
2.2 修改堆内内存
堆内内存的修改方法,请参见下方表格文档:
参数介绍 | 服务器类型 | 参考文档 |
---|---|---|
-Xmx 参数:最大堆内内存 -Xms 参数:初始化内存大小 注1:Xmx/Xms 与数字之间不要有空格 注2:建议配置Xms=Xmx,以防止内存扩容失败情况 | Tomcat 服务器 | Tomcat 服务器内存修改 |
WebLogic 服务器 | WebLogic 服务器内存修改 | |
WebSphere 服务器 | WebSphere 服务器 | |
JBoss 服务器 | JBoss 服务器 | |
Resin 服务器 | Resin 服务器内存修改 |
2.3 修改堆外内存
堆外内存由-XX:MaxDirectMemorySize这个参数来设置。本文以工程部署在 Tomcat 上为例介绍修改方法。
Windows:修改%Tomcat%/bin目录下的 catalina.bat 文件,增加配置,配置完成后重启工程。
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxDirectMemorySize=2g
Linux/Unix:修改%Tomcat%/bin目录下的 catalina.sh 文件,增加配置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=2g"
如下图所示:
2.4 修改 fineIO 读内存
fineIO 读内存由-Dfineio.read_mem_limit这个参数来设置。请根据自身工程部署情况选择修改方法。本节展示 Tomcat 环境下设置 fineIO读内存 的步骤。
读内存的默认单位为 GB,支持小数,但不支持使用 g、m 等。建议读内存为写内存的2-3倍,缓存大小建议与写内存大小一致。
Windows:在%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。
Linux:在%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -Dfineio.read_mem_limit=2"
2.5 修改 fineIO 写内存
fineIO 写内存由-Dfineio.write_mem_limit这个参数来设置。请根据自身工程部署情况选择修改方法。本节展示 Tomcat 环境下设置 fineIO写内存 的步骤。
写内存的默认单位为 GB,支持小数,但不支持使用 g、m 等。建议读内存为写内存的2-3倍,缓存大小建议与写内存大小一致。
Windows:在%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。
Linux:在%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -Dfineio.write_mem_limit=1"
3. 其他检查项编辑
检查结果和改进建议具体如下表所示:
检查项 | 当前配置 | 检测出问题标准 | 改进建议 |
---|---|---|---|
磁盘剩余空间 | 显示工程所在磁盘当前剩余空间 | 工程所在磁盘剩余空间小于 5GB | 系统所在磁盘剩余空间建议不小于5G,请及时进行清理 |
垃圾回收器类型 | 显示当前垃圾回收器类型 | GC 类型不为 ParallelScavenge | 建议 JVM 使用垃圾回收器类型为 ParallelScavenge 请参考 2.1 节进行修改 |
堆内老年代与新生代的比例 | 显示当前堆内老年代与新生代大小比例 | 堆内老年代与新生代大小比例不为 2 | 建议 JVM 老年代与新生代大小比例设置为 2 请参考 3.1 节进行修改 |
栈空间 | 显示当前 -Xss 的值 | -Xss 的值大于 1024 | 建议单线程使用栈空间不超过 1024 KB 请参考 3.2 节进行修改 |
JDK 版本 | 显示当前 JDK 版本 | JDK 版本低于 1.8.101 版本 | 建议使用「JDK8」中 1.8.0_181 及以上版本 |
finedb | 多工程共用 | 与其他工程共用 finedb ,如: 1)两个及以上报表工程共用 2)两个及以上 BI 工程共用 3)报表 BI 集成工程与报表单独工程共用 4)报表 BI 集成工程与 BI 单独工程共用 5)报表工程与 BI 工程共用 | 建议一个 finedb 仅对应一个工程,杜绝多个工程共用一个 finedb 请参考 配置外接数据库 文档迁移 finedb |
finedb | HSQL | 使用内置数据库 | 建议将 finedb 迁移至更稳定的外接数据库中 请参考 配置外接数据库 文档迁移 finedb |
DisableExplicitGC 参数 | 已配置 | 配置 DisableExplicitGC 参数时提示 | 建议取消该 DisableExplicitGC 参数配置 请参考 3.3 节取消参数配置 |
headless 模式 | 未启用 | 未配置 -Djava.awt.headless=true 时提示 | 建议配置 -Djava.awt.headless=true 以启用 headless 模式 请参考 3.4 节进行配置 |
日志级别 | DEBUG | 当前日志级别配置为 DEBUG 级别时提示 | 建议设置日志级别为 ERROR 请参考 日志简介 2.3 节设置日志级别 |
3.1 设置堆内老年代与新生代大小比例
堆内老年代与新生代大小比例建议为 2(-XX:NewRatio=2,JVM的默认值);NewRatio 大小正常生效需要用户不限制新生代大小。
在设置-Xmx、-Xms参数的位置,添加 NewRatio 的值即可,本节展示 Tomcat 环境下设置 NewRatio 的步骤。
Windows:在%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。
Linux:在%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx8196M -XX:NewRatio=2"
3.2 设置单线程使用栈空间
建议单线程使用栈空间不超过1024KB,即 -Xss 的值不超过 1024 。
在设置-Xmx、-Xms参数的位置,添加 -Xss 的值即可,本节展示 Tomcat 环境下设置 -Xss 的步骤。
Windows:在%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。
Linux 系统:在%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx8196M -Xss1024K"
3.3 设置 DisableExplicitGC 参数
-XX:+DisableExplicitGC参数的作用是禁用 System.gc()
System.gc() 是一种保护机制,例如堆外内存满时清理它的堆内引用对象,用户需要根据实际情况选择是否使用该参数。
本节展示 Tomcat 环境下设置 DisableExplicitGC 参数的步骤。
Windows:在%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。
Linux:在%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
3.4 修改 headless 模式参数
headless 模式是系统的一种工作模式,如果系统属性 java.awt.headless被设置true,那么headless工具包就会被使用。
本节展示 Tomcat 环境下启用 headless 模式的步骤。
Windows:在%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。
Linux:在%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
4. 一键配置编辑
11.0.3 及之后版本,支持一键配置系统检查建议值。
4.1 不支持的环境
对于以下环境,不支持一键配置功能:
1)非 Tomcat 部署环境,不支持一键配置系统检查建议值,例如was部署、weblogic部署等。
2)FineReport 和FineBI 集成的环境,不支持一键配置系统检查建议值。
3)工程系统中若存在自行设置的 setenv 文件,不支持一键配置系统检查建议值。
4)服务形式启动的 Tomcat 工程,不支持一键配置系统检查建议值。
5)Windows环境下 exe 启动的 Tomcat 工程,不支持一键配置系统检查建议值。
6)设计器环境下的 FineReport 工程,不支持一键配置系统检查建议值。
7)系统物理内存为 16 GB及以下的环境,不支持一键配置系统检查建议值。
8)集群工程环境,不支持一键配置系统检查建议值。
4.2 配置方法
若当前工程环境满足一键配置的要求,且存在需要一键配置的检查项,在「系统检查」页面左上角出现按钮「查看建议配置」。
点击「查看建议配置」,即可勾选需要配置的检查项,点击「应用配置」,即可一键配置异常项的值。配置成功后,跳出提示「应用配置成功,重启服务器后生效」。
报表工程重启后,可以发现刚刚的异常项均已成功配置。
注1:支持一键配置的检查项为:堆内内存、堆外NIO内存、堆外FineIO内存、垃圾回收器类型、老年代与新生代比例、栈空间。
注2:若没有文件读写权限或者无法修改配置文件时,提示「应用配置失败:没有配置文件读写权限」,点击「确定」,则修改失败,返回系统检查界面。
5. 触发检查编辑
4.1 手动检查
系统重启后,每小时获取一次系统的配置情况。
当管理员登录数据决策系统,打开「系统检查」页面时,系统自动进行检查,获取最近一次的系统配置,更新检查结果。
4.2 自动检查
在「系统检查」页面,管理员可开启「系统自动检查」并保存。
开启后,系统在每日凌晨 1 点进行自动检查,存在不合理配置时可通过短信提醒、平台消息、邮件提醒三种形式通知管理员。
注:
1)短信提醒:需要开启短信平台,详细点击 短信
2)邮件提醒:需要配置邮件服务器,详细点击 邮箱
3)平台消息:需要在负载均衡层面配置websocket端口并且开放,相关文档:Websocket端口被占用/无法使用