在 Linux 中使用 FineBI,系統使用過程中 FineBI 的進程異常關閉,查看 BI 的日誌並沒有任何的異常資訊。
針對上述的現象,問題原因可能為 FineBI 的進程是被系統 Kill 掉的,可去檢查 Linux 系統日誌/var/log/messages,查看進程被異常關閉的時間點日誌。
若該時間點存在對應 Kill 掉 FineBI 進程的日誌,說明 FineBI 進程是被系統 Kill 掉的。
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,對記憶體申請來者不拒。
根據需要調整核心參數值,或者增加系統的記憶體來解決。調整核心參數值後需要輸入命令 sysctl -p,使配置檔案生效。
sysctl -p
詳細原理可參考 理解LINUX的MEMORY OVERCOMMIT。