簡體   English   中英

作為cronjob運行時如何處理Java運行時錯誤

[英]How do handle Java runtime errors when running as a cronjob

我正在將Java獨立作業作為cronjobs運行。 我注意到,在極少數情況下,作業會因運行時異常(例如OutOfMemoryError)而失敗。 Cron的MAIL_TO處理程序似乎並沒有解決工作的失敗,顯然Java應用程序無能為力,因為由於內存錯誤導致執行停止。

什么是處理此類錯誤並發出cron警報的最佳實踐? 我能想到的最接近的是,每個Java作業都會寫入一個“ SUCCESS”日志記錄,然后將一個grep鏈接到cronjob中,並返回一個錯誤代碼,以便cron的MAIL_TO可以選擇它。 這樣顯然會使crontab變得混亂,並且顯然需要更改代碼才能寫入日志條目。

當未捕獲的異常完全進入也不對其進行處理的主線程時,JVM(與之關聯的進程)將以退出代碼1退出。

因此,一種選擇是將所有檢查的異常都捕獲在main()並使用System.exit()以1以外的任何其他值退出(不要以0退出,因為這是成功的“標准”),並且具有cron腳本可以處理任何退出代碼(例如,使用$?變量)。

另外,不要忘記默認情況下堆棧跟蹤進入stderr。

您為什么不使用try catch塊來捕獲內存不足異常並在catch塊中做必要的事情..當您到達catch塊時,您可以創建故障日志記錄並將作業添加到日志中

我認為最好的方法是將成功完成標志存儲在數據庫或日志中,然后基於計數,我的意思是可以檢查cron在一天或一周內應運行多少次日志或數據庫,以查看是否有任何失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM