反馈已提交

网络繁忙

您正在浏览的是 FineBI6.0 帮助文档,点击跳转至: FineBI5.1帮助文档

BI宕机问题排查

  • 文档创建者:doreen0813
  • 历史版本:24
  • 最近更新:Carly 于 2023-06-20
  • 1. 概述

    用户在使用 BI 时,可能会出现宕机而导致无法使用的情况,此时可以按照本文的步骤进行排查。

    宕机.png

    2. 检查进程是否存在

    检查方案:

    这里以 Tomcat 为例。可以使用 jps -l 命令查看,Tomcat 直接部署的进程名为 Bootstrap,安装包部署的进程名为 UnixLauncher,如下图所示:

    1588916841360977.png

    也可以在命令行输入ps -ef|grep tomcat,如下图所示:

    6.png

    结果分析:

    若进程消失,直接重启 BI 服务器,详情参见:FineBI安装与启动

    若进程仍然存在,继续按照下面的步骤排查。

    3. 进程存在判断问题

    3.1 检查是否为内存溢出OOM

    内存溢出的导致无响应的主要原因,是 JVM 的内存全部耗光,但是依然需要进一步分配内存。

    此时 JVM 就会进行很多次的的Full GC,希望回收不使用的内存。但是由于数据都在使用,因此一直释放不掉内存,于是就一遍遍的进行Full GC。

    检查方案:

    1)键入 top 命令后,进程的 CPU 使用率非常高。

    2)CPU 高并不一定是在做 Full GC,需要进一步确认。做 FullGC 不代表是OOM,只有持续不断在 Full GC 的情况是 OOM 。输入jstat -gc pid 2000 2000 命令,如下图所示:

    406.png

    关注 FGC 一栏,如果数值增加很快,而且 FGCT(Full GC 的总时间)数值很大,例如 FGC 为20 FGCT已经 2000 以上,平均一次 FGC 耗时 100s ,可以确定是内存溢出了导致的宕机,需要获取 dump 。

    3.2 造成内存溢出的原因排查及对应方案

    • Logger占用内存过高

    若安装了平台日志导出插件,则禁用该插件。

    • 更新任务占用内存过高

    更新任务默认尽可能的占用资源来提升更新性能。

    • 堆外内存 OOM

    图表 J2V8 线程 OOM。在图表组件分组超过 5000 时,绘图逻辑会在后端处理,此时图表 J2V8 计算使用的是堆外内存,在触发OOM时 JVM 会崩溃并生成 hs 文件,进入%FineBI%bin 路径下即可看到该文件。

    • glibc的内存缓存

    如果发现JVM内存、堆外内存都正常,需要排查下是否是linux系统没有及时回收内存。

    Linux系统的内存回收是glibc做的,付费用户可联系帆软技术支持协助检查pmap文件大小,从而判断glibc是否占用内存过多,导致了宕机。

      3.3 内存溢出-获取 dump 文件

      方法一:配置 dump 参数

      建议为工程配置上宕机自动生成 dump 日志的 JVM 参数,配置该参数对工程运行没有性能损耗的影响,仅用于在服务器宕机时生成 dump 日志。

      注:其中 /opt/ 路径表示的是宕机文件生成路径,可以根据需要修改文件路径。修改保存后,需要重启 Tomcat 才能使配置生效。

      • Windows:进入%Tomcat_HOME%\bin目录。寻找名为setenv.bat的文件。如果文件不存在,可以创建一个新的setenv.bat文件。在文件中添加以下行来设置,配置完成后重启工程。

      set JAVA_OPTS=%JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError

      set JAVA_OPTS=%JAVA_OPTS% -XX:HeapDumpPath=/opt/

      • Linux:进入%Tomcat_HOME%\bin目录。寻找名为setenv.sh的文件。如果文件不存在,可以创建一个新的setenv.sh文件。在文件中添加以下行来设置,配置完成后重启工程。

      JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
      JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=/opt/" 

      方法二:手动获取dump文件

      若没有配置 dump 参数,则需要手动获取 dump 文件,执行jmap -dump:format=b,live,file=路径   进程pid,例如获取 22374 进程的 dump 文件,如下代码所示:

      jmap -dump:format=b,live,file=22374.hprof 22374

      3.4 不是内存溢出OMM -打堆栈

      若用户环境有 JDK :

      1)查出进程

      Linux 环境 ,执行命令:ps -ef|grep tomcat

      Windows 环境:查看任务管理器,可以查到 FineBI 的进程(pid)

      Win7 可用 dos 窗口,命令类似:netstat  -aon|findstr  "37799"

      2)打堆栈,一般每隔 3 秒打一个,打三至四个,如下所示:

      jstack  pid > a1.txt
      jstack  pid > a2.txt
      jstack  pid > a3.txt

      若用户环境未安装 JDK :

      jstack 命令是依赖 JDK 的,但是客户没安装 JDK ,客户环境也不太方便安装 JDK 的时候,进行如下操作:

      1)将自己电脑本地的 JDK 拷贝到用户工程上。

      2)解压到磁盘目录,最好是根目录。

      3)此时利用命令行执行到 bin 目录。

      4)然后打 jstack 即可。

      注:如果无法正常执行,可配置环境变量。

      3.5 重启BI服务器

      上面判断问题的步骤结束后,需要重启 BI 服务器。

      附件列表


      主题: 管理系统
      • 有帮助
      • 没帮助
      • 只是浏览
      中文(简体)

      鼠标选中内容,快速反馈问题

      鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

      不再提示

      10s后关闭

      联系我们
      在线支持
      获取专业技术支持,快速帮助您解决问题
      工作日9:00-12:00,13:30-17:30在线
      页面反馈
      针对当前网页的建议、问题反馈
      售前咨询
      采购需求/获取报价/预约演示
      或拨打: 400-811-8890 转1
      qr
      热线电话
      咨询/故障救援热线:400-811-8890转2
      总裁办24H投诉:17312781526
      提交页面反馈
      仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持