历史版本9 :健康巡检 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

BI 服务器版本
5.1.14

1.2 功能简介

本文将简单介绍 系统检查 功能的检查逻辑和检查项。

注1:若无法检测出当前配置,当前配置为空,修改意见为「暂不支持此项」,点击状态后面的「详情」,即可查看具体原因。

注2:若所有检查项均没有问题时,会提示:当前系统运行良好,无需调整。

注3:若系统为集群环境,在「系统检查」页面左上角可选择具体的集群节点进行检测。

2. 内存检测项编辑

内存检测项的检测逻辑如下表所示:

序号检查项
检查内容检查结果改进建议
1当前物理内存检测当前物理内存是否大于等于BI运行要求最小值16G若当前系统物理内存不小于16G,则该项检查合格,进入第 2 项检查-

若当前物理内存小于16G,则提示修改,并结束检测进程。

当前系统物理内存较小,建议增加物理内存至16G以上
2单机多进程

检测工程所在的系统中,除 BI 进程之外的其他进程占用的内存是否过大

若除 BI 进程之外的其他进程占用的内存适当,则该项检查合格,进入第 3 项检查-
若除 BI 进程之外的其他进程占用的内存过大,则认为该系统为单机多进程系统,系统稳定性较差,提示修改,并进入第 3 项检查

当前系统疑似为多进程,存在宕机隐患,建议仅保留BI工程

建议关闭系统中其他无用进程,仅保留 BI 工程相关的进程

3堆外内存当前值BI 需要占用一定的堆外内存(MaxDirectMemorySize),堆外内存小于 2G 时不够用,所以需要提前检测是否满足使用要求若堆外内存当前值不小于2G,则该项检查合格,进入第 4 项检查-
若堆外内存当前值小于2G,提示修改,并进入第 4 项检查

建议JVM NIO使用堆外内存设置为2GB

请参考 2.2 节修改堆外内存

4fineIO读内存检测fineIO读内存(-Dfineio.read_mem_limit)参数配置大小是否小于2G若当前fineIO读内存不小于2G,则该项检查合格,进入第 5 项检查-
若当前fineIO读内存小于2G,则提示修改,并进入第 5 项检查

建议JVM fineIO读内存使用堆外内存设置为2G

请参考 2.3 节修改 fineIO读内存

5fineIO写内存检测fineIO写内存(-Dfineio.write_mem_limit)参数配置大小是否小于1G若当前fineIO写内存不小于1G,则该项检查合格,进入第 6 项检查-
若当前fineIO写内存小于1G,则提示修改,并进入第 6 项检查

建议JVM fineIO写内存使用堆外内存设置为1G

请参考 2.4 节修改 fineIO写内存

6当前系统配置

检测 BI 工程所所有参数所用内存是否已经超过了最大值(BImax)

BImax=max(2,NIO)+max(3g,FIO)+max(8,V)+other

NIO:堆外内存当前值

FIO:fineIO读内存+fineIO写内存

V:堆内内存当前值

other:min(min(物理内存-15,物理内存/8), 6GB)

若 BImax≤7/8物理内存,则跳转至第 13 项检查

-
若 BImax>7/8物理内存,则认为此时内存使用超标,需要继续检测每个参数是否超标,即进行第 7 项检查-
7堆外内存当前值判断堆外内存(MaxDirectMemorySize)是否超过 2G若堆外内存当前值等于2G,则跳转至第 9 项检查-
若堆外内存当前值大于2G,提示修改,并进入第 8 项检查

建议JVM NIO使用堆外内存设置为2GB

请参考 2.2 节修改堆外内存

8判断BImax是否符合要求将堆外内存NIO=2G代入公式进行计算,判断是否符合要求若BImax=NIO=2g+ FIO=max(3g,FIO),+V=max(8,V)+other≤7/8P,则认为符合要求,跳转至第 13 项检查-
若BImax=NIO=2g+ FIO=max(3g,FIO),+V=max(8,V)+other>7/8P,则认为不符合要求,进入第 9 项检查-
9fineIO读内存检测fineIO读内存(-Dfineio.read_mem_limit)是否超过2G若当前fineIO读内存等于2G,则跳转至第 11 项检查-
若当前fineIO读内存大于2G,则提示修改,并进入第 10 项检查

建议JVM fineIO读内存使用堆外内存设置为2G

请参考 2.3 节修改 fineIO读内存

10判断BImax是否符合要求将堆外内存NIO=2G,fineIO读内存=2G代入公式进行计算,判断是否符合要求若BImax=NIO(2G)+ fineIO读内存(2G)+max(1G,fineIO写内存)+max(8,V)+other≤7/8P,则认为符合要求,跳转至第 13 项检查-
若BImax=NIO(2G)+ fineIO读内存(2G)+max(1G,fineIO写内存)+max(8,V)+other>7/8P,则认为不符合要求,进入第 9 项检查-
11fineIO写内存检测fineIO写内存(-Dfineio.write_mem_limit)是否超过1G若当前fineIO写内存等于1G,则进入第 12 项检查-
若当前fineIO写内存小于1G,则提示修改,并进入第 12 项检查

建议JVM fineIO写内存使用堆外内存设置为1G

请参考 2.4 节修改 fineIO写内存

12判断BImax是否符合要求将堆外内存NIO=2G,fineIO读内存=2G,fineIO写内存=1G 代入公式进行计算,判断是否符合要求若BImax=NIO(2G)+ fineIO读内存(2G)+fineIO写内存(1G)+max(8,V)+other≤7/8P,则此时肯定为xmx配置出现问题,进入第 13 项检查-
若BImax=NIO(2G)+ fineIO读内存(2G)+fineIO写内存(1G)+max(8,V)+other>7/8P,则跳转至第 14 项检查-
13堆内内存一次判断判断当前配置的堆内内存是否满足最低配置以及规避了GC性能最差的配置若31.5<xmx<40或xmx<8,则进入第 14 项检查-
若不满足31.5<xmx<40或xmx<8,则结束判断流程-
14堆内内存二次判断判断各个推荐值修改后根据BImax公式得出的xmx是否满足31.5<V<40若31.5<V<40,提示修改堆内内存,并结束判断流程

设置堆内内存为30G

请参考 2.1 节配置堆内内存

若不满足31.5<V<40,提示修改堆内内存,并结束判断流程

设置堆内内存为一个系统计算后的值

请参考 2.1 节配置堆内内存

2.1 修改堆内内存

堆内内存的修改方法,请参见下方表格文档:

参数介绍服务器类型参考文档

-Xmx 参数:最大堆内内存

-Xms 参数:初始化内存大小

注1:Xmx/Xms 与数字之间不要有空格

注2:建议配置Xms=Xmx,以防止内存扩容失败情况

Tomcat 服务器
Tomcat 服务器内存修改
WebLogic 服务器WebLogic 服务器内存修改
WebSphere 服务器WebSphere 服务器
JBoss 服务器JBoss 服务器
Resin 服务器Resin 服务器内存修改

2.2 修改堆外内存

堆外内存由-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.3 修改 fineIO 读内存

fineIO 读内存由-Dfineio.read_mem_limit这个参数来设置。请根据自身工程部署情况选择修改方法。本节展示 Tomcat 环境下设置 fineIO读内存 的步骤。

读内存的默认单位为 GB,支持小数,但不支持使用 g、m 等。建议读内存为写内存的2-3倍,缓存大小建议与写内存大小一致。

Windows:%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS=%JAVA_OPTS% -Dfineio.read_mem_limit=2

Linux:%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -Dfineio.read_mem_limit=2"

2.4 修改 fineIO 写内存

fineIO 写内存由-Dfineio.write_mem_limit这个参数来设置。请根据自身工程部署情况选择修改方法。本节展示 Tomcat 环境下设置 fineIO写内存 的步骤。

写内存的默认单位为 GB,支持小数,但不支持使用 g、m 等。建议读内存为写内存的2-3倍,缓存大小建议与写内存大小一致。

Windows:%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS=%JAVA_OPTS% -Dfineio.write_mem_limit=1

Linux:%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -Dfineio.write_mem_limit=1"

3. 其他检查项编辑

检查结果和改进建议具体如下表所示:

检查项
当前配置检测出问题标准改进建议
root目录磁盘显示当前root目录磁盘空闲值大小检测到root目录磁盘当前剩余空间小于5G时建议root目录磁盘剩余空间不小于5G,请及时进行清理
db 更新目录磁盘显示当前db 更新目录磁盘空闲值大小检测到db更新目录磁盘当前剩余空间小于10G时建议db更新目录磁盘剩余空间不小于10G,请及时进行清理
temp目录磁盘显示当前temp目录磁盘空闲值大小检测到temp目录磁盘当前剩余空间小于10G时建议temp目录磁盘剩余空间不小于10G,请及时进行清理
磁盘(root/db更新/temp任意多个目录挂载在同一磁盘时显示此项)显示当前多目录磁盘空闲值大小检测到多目录磁盘当前剩余空间小于20G时建议root/db 更新/temp 目录磁盘剩余空间不小于20G,请及时清理(这里会给出具体任意多目录的具体目录类别)
spark_memory_fracrtion显示当前配置值大小检测到spark_memory_fraction > min(Xmx/8 * 0.3, 0.6)时建议spark_memory_fraction 参数不超过min(Xmx/8 * 0.3, 0.6)
垃圾回收器类型显示当前垃圾回收器类型GC 类型不为 ParallelScavenge建议 JVM 使用垃圾回收器类型为 ParallelScavenge
请参考 3.1 节进行修改
堆内老年代与新生代的比例显示当前堆内老年代与新生代大小比例堆内老年代与新生代大小比例不为 2建议 JVM 老年代与新生代大小比例设置为 2
请参考 3.2 节进行修改
栈空间显示当前 -Xss 的值-Xss 的值大于 512建议单线程使用栈空间不超过 1024 KB
请参考 3.3 节进行修改
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
finedbHSQL使用内置数据库建议将 finedb 迁移至更稳定的外接数据库中
请参考 配置外接数据库 文档迁移 finedb
DisableExplicitGC 参数已配置配置 DisableExplicitGC 参数时提示建议取消该 DisableExplicitGC 参数配置
请参考 3.4 节取消参数配置
headless 模式未启用未配置 -Djava.awt.headless=true 时提示建议配置 -Djava.awt.headless=true 以启用 headless 模式
请参考 3.5 节进行配置
debug模式已启用已配置-Xrunjdwp或者-agentlib:jdwp参数时提示建议取消debug模式
dump导出未配置未配置 HeapDumpOnOutOfMemoryError 及 HeapDumpPath时提示

建议配置HeapDumpOnOutOfMemoryError 及 HeapDumpPath以保证正常导出dump

请参考 3.8 节进行修改

vm.max_map_count当前配置值vm.max_map_count<262144时提示

建议配置 vm.max_map_count 参数为 262144

请参考 3.9 节进行修改

日志级别DEBUG当前日志级别配置为 DEBUG 级别时提示建议设置日志级别为 ERROR
请参考 日志简介 2.2 节设置日志级别
堆内存
显示当前配置超过 40G 时提示

建议堆内存不超过64G

请参考 2.1 节配置堆内内存

最大文件打开数显示当前配置参数配置值低于65536时提示

建议open_files参数配置不低于65536

请参考 3.6 节修改最大文件打开数

resultSetRowLimit显示当前配置参数配置值大于${阈值}时提示

建议resultSetRowLimit配置不超过${阈值}

请修改 BI/Spider参数 中的「数据访问量」参数

recompilationCutoff显示当前配置参数配置值大于${阈值}时提示

建议recompilationCutoff相关参数配置值为-1

请参考 3.7 节设置参数值

spider_update_fast_compute_limit_cell

显示当前配置参数配置值大于${阈值}时提示

建议 spider_update_fast_compute_limit_cell 配置不超过${阈值}

修改方法请参考:FINE_CONF_ENTITY可视化配置

spark_driver_maxResultSize显示当前配置参数配置值大于${阈值}时提示

建议spark_driver_maxResultSize配置不超过${阈值}

修改方法请参考:FINE_CONF_ENTITY可视化配置

spider_fast_compute_limit_row

显示当前配置参数配置值大于${阈值}时提示

建议spider_fast_compute_limit_row配置不超过${阈值}

修改方法请参考:FINE_CONF_ENTITY可视化配置

spider_fast_compute_limit_unit

显示当前配置参数配置值大于${阈值}时提示

建议spider_fast_compute_limit_unit配置不超过${阈值}

修改方法请参考:FINE_CONF_ENTITY可视化配置

spider_fast_compute_limit_memory

显示当前配置参数配置值大于${阈值}时提示

建议spider_fast_compute_limit_memory配置不超过${阈值}

修改方法请参考:FINE_CONF_ENTITY可视化配置

3.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"

3.2 设置堆内老年代与新生代大小比例

堆内老年代与新生代大小比例建议为 2(-XX:NewRatio=2,JVM的默认值);NewRatio 大小正常生效需要用户不限制新生代大小。

在设置-Xmx、-Xms参数的位置,添加 NewRatio 的值即可,本节展示 Tomcat 环境下设置 NewRatio 的步骤。

Windows:%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS= -Xms512M -Xmx1024M -XX:NewRatio=2

Linux:%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx8196M -XX:NewRatio=2"

3.3 设置单线程使用栈空间

建议单线程使用栈空间不超过1024KB,即 -Xss 的值不超过 1024 。

在设置-Xmx、-Xms参数的位置,添加 -Xss 的值即可,本节展示 Tomcat 环境下设置 -Xss 的步骤。

Windows:%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS= -Xms512M -Xmx1024M -Xss1024K

Linux 系统:%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx8196M -Xss1024K"

3.4 设置 DisableExplicitGC 参数

-XX:+DisableExplicitGC参数的作用是禁用 System.gc()。System.gc() 是一种保护机制,例如堆外内存满时清理它的堆内引用对象.

用户需要根据实际情况选择是否使用该参数,建议删除该参数(删除下文设置的配置即可)。

本节展示 Tomcat 环境下设置 DisableExplicitGC 参数的步骤。

Windows:%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC

Linux:%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"

3.5 修改 headless 模式参数

headless 模式是系统的一种工作模式,如果系统属性 java.awt.headless被设置true,那么headless工具包就会被使用。

本节展示 Tomcat 环境下启用 headless 模式的步骤。

Windows:%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS=%JAVA_OPTS% -Djava.awt.headless=true

Linux:%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"

3.6 修改最大文件打开数

修改linux的软硬件限制文件/etc/security/limits.conf,在文件尾部添加如下代码, 配置完成后重启工程即可生效。

* soft nofile 65536
* hard nofile 65536

3.7 设置 recompilationCutoff 参数

没有配置 RecompilationCutoff 参数/配置的 RecompilationCutoff 参数太小,可能会导致 spider 引擎数据更新缓慢。

本节展示 Tomcat 环境下设置 recompilationCutoff 参数的步骤。

Windows:%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS=%JAVA_OPTS% -XX:PerMethodRecompilationCutoff=-1 -XX:PerBytecodeRecompilationCutoff=-1

Linux:%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -XX:PerMethodRecompilationCutoff=-1 -XX:PerBytecodeRecompilationCutoff=-1"

3.8 设置 HeapDumpOnOutOfMemoryError 及 HeapDumpPath 参数

1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。

2)-XX:HeapDumpPath=${目录}参数表示生成dump文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。

如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。

本节展示 Tomcat 环境下设置 recompilationCutoff 参数的步骤。
Windows:在%Tomcat%/bin目录下的catalina.bat文件中新增配置,配置完成后重启工程。

set JAVA_OPTS=%JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=${目录}

Linux:在%Tomcat%/bin目录下的catalina.sh文件中新增配置,配置完成后重启工程。

JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=${目录}"

3.9 设置 vm.max_map_count 参数

max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量

建议配置 vm.max_map_count 参数为 262144,本节展示 Linux 环境下设置 vm.max_map_count 参数的步骤。

vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p