BE节点挂了应该如何排查原因
BE 进程是 C/C++ 进程,可能会因为一些程序 Bug(内存越界,非法地址访问等)或 Out Of Memory(OOM)导致进程挂掉。此时我们可以通过以下几个步骤查看错误原因:
- 查看 be.out
BE 进程实现了在程序因异常情况退出时,会打印当前的错误堆栈到 be.out 里(注意是 be.out,不是 be.INFO 或 be.WARNING)。通过错误堆栈,通常能够大致获悉程序出错的位置。
注意,如果 be.out 中出现错误堆栈,通常情况下是因为程序 bug,普通用户可能无法自行解决,欢迎前往微信群、github discussion 或 dev 邮件组寻求帮助,并贴出对应的错误堆栈,以便快速排查问题。 - dmesg
如果 be.out 没有堆栈信息,则大概率是因为 OOM 被系统强制 kill 掉了。此时可以通过 dmesg -T 这个命令查看 linux 系统日志,如果最后出现 Memory cgroup out of memory: Kill process 7187 (doris_be) score 1007 or sacrifice child 类似的日志,则说明是 OOM 导致的。
内存问题可能有多方面原因,如大查询、导入、compaction 等。Doris 也在不断优化内存使用。欢迎前往微信群、github discussion 或 dev 邮件组寻求帮助。 - 查看 be.INFO 中是否有 F 开头的日志。
F 开头的日志是 Fatal 日志。如 F0916,表示 9 月 16 号的 Fatal 日志。Fatal 日志通常表示程序断言错误,断言错误会直接导致进程退出(说明程序出现了 Bug)。欢迎前往微信群、github discussion 或 dev 邮件组寻求帮助。
FE节点挂了应该如何排查原因
FE 是 java 进程,健壮程度要优于 C/C++ 程序。通常 FE 挂掉的原因可能是 OOM(Out-of-Memory)或者是元数据写入失败。这些错误通常在 fe.log 或者 fe.out 中有错误堆栈。需要根据错误堆栈信息进一步排查。
引自:https://doris.apache.org/zh-CN/docs/2.0/faq/install-faq