我正在為一些日常流程實現 Spring Batch 多線程。項目閱讀器、項目處理器和項目編寫器都是 bean(單例)。此外,我正在使用 Hibernate 和 spring data jpa 進行數據庫訪問。對于線程,我使用的是 threadpooltaskexecutor。線程會無緣無故掛起,可能我不知道根本原因。現在,在日志中,hibernate 將停留在 select 或 insert 語句中,并且永遠掛在那里。我真的不知道原因。對于事務,我有 required_new 和 read_committed 用于傳播和隔離。其他一切都是 Spring Boot 的默認設置。我正在處理 20k json,大小可能不同,但有些很大。我不能分享整個代碼,因為我不知道問題出在哪里?;旧显陧椖刻幚砥髦?,我幾乎沒有同步塊來處理業務邏輯。對于這個問題,我只想知道可能的原因是什么?因為Java不提供任何信息。
1 回答

吃雞游戲
TA貢獻1829條經驗 獲得超7個贊
沒有代碼,很難說可能是什么問題。你需要深入挖掘它被絞死的確切位置。可能的原因是
在閱讀器中選擇查詢需要很長時間。(可能是由于不正確的索引或表可能已鎖定)。您可以在閱讀器中添加更多日志,以準確檢查導致此問題的記錄。
如果您在 ItemProcessor 中執行任何數據庫操作,請添加日志添加檢查。
在 writer 中,插入可能需要很長時間才能完成寫作。
添加回答
舉報
0/150
提交
取消