历史版本1 :Linux中BI进程异常关闭 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:
1、问题描述

在Linux中使用FineBI,系统使用过程中FineBI的进程异常关闭,查看BI的日志并没有任何的异常信息。

2、问题原因及解决方案

2.1 可能原因

针对上述的现象,问题原因可能为FineBI的进程是被系统Kill掉的,可去检查Linux系统日志/var/log/messages,查看进程被异常关闭的时间点日志。

若该时间点存在对应Kill掉FineBI进程的日志,说明FineBI进程是被系统Kill掉的。

2.2 解决方案

Linux系统Kill掉FineBI的进程,可能是由于自身的OOM KILLER机制造成的,查看自身Linux系统的/etc/sysctl.conf文件(内核参数配置),若其中的vm.overcommit_memory=2,即表示系统不允许overcommit操作。

该OOM KILLER机制会在linux内存紧张的时候,依次Kill内存占用较高的进程,并在/var/log/message中进行记录,里面会记录一些如pid,process name,cpu mask,trace等信息,通过监控可以发现类似问题。

针对此类问题,我们可以调整系统的vm.overcommit_memory内核参数值,将其设置0/1,分别表示:

  • 0 – Heuristic overcommit handling. 这是缺省值,它允许overcommit,但过于明目张胆的overcommit会被拒绝,比如malloc一次性申请的内存大小就超过了系统总内存。Heuristic的意思是“试探式的”,内核利用某种算法(对该算法的详细解释请看文末)猜测你的内存申请是否合理,它认为不合理就会拒绝overcommit。
  • 1 – Always overcommit. 允许overcommit,对内存申请来者不拒。

根据需要调整内核参数值,或者增加系统的内存来解决。

详细原理可参考理解LINUX的MEMORY OVERCOMMIT