問題狀態:
java 程序
日志采用 log4j
運行時由另一個管理進程拉起,程序在后台運行。
現象:
程序后台運行時,運行一段時間后假死
分析原因:
嘗試打印輸出,定位假死的具體位置,發現出現假死的位置不固定,甚至是基本的日志輸出都有問題
嘗試手動啟動,程序能正常運行,並且發現有大量的打印輸出到終端
結論:
程序在終端有打印信息輸出,在后台運行后,信息無法輸出到終端,
打印信息過多后,緩沖區寫滿,程序停止運行,造成假死現象
解決方法:
1 后台運行的程序不打印輸出信息到終端 由於程序采用log4j,所以屏蔽 log4j.xml 配置中的 Console 配置輸出 2 使用 nohup 將打印信息追加到 nohup.out 文件中,這種會隨着時間的累計生成很大的文件
