分析**後發現,
那…如果補償佇列有源源不斷的大批量訊息,那麼會存在三個問題。
1、while迴圈一直不結束。
2、若消費補償佇列時失敗,則會存放在errorlist,若有大批量的訊息失敗,會導致有這個list會無限增大,最嚴重時甚至oom
3、確認時採取了一次確認,若存在上百萬上千萬的補償訊息同時確認會導致占用時間增長,mq處理不過來,甚至阻塞,網路頻寬被打滿的情況
當rabbitmq集群由5個節點組成的時候,如果2個或2個或以上節點在一定時間內有網路或連線阻塞問題,會導致集群出現不可恢復的腦裂問題。
事後進行了復現,在出現大量訊息快速消費且批量ack時會出現sync節點資訊同步情況,如果同步時間過長會導致同步失敗以致於節點失聯。
mq集群在滿足以下特定條件後,出現卡死現象,不能正常生產和消費訊息:
1.mq集群最大使用記憶體閾值設定超過60%
2.mq集群中記憶體中有大量訊息,占用較多記憶體,接近設定閾值
3.mq集群處在頻繁生產和消費訊息的場景下,大塊記憶體被快速交換使用
4.mq集群版本為3.5,較低,且執行在centos6系統
spring boot 定時任務實現
scheduled 使用 scheduled 非常容易,直接建立乙個 spring boot 專案,並且新增 web 依賴 spring boot starter web,專案建立成功後,新增 enablescheduling 註解,開啟定時任務 enablescheduling 開啟定時任務 pu...
Spring定時任務實現
一 spring 定時任務 component enablescheduling 可以在啟動類上註解也可以在當前檔案 public class testschedule scheduled fixedrate 1000 10 public void runsecend scheduled fixed...
SpringBoot定時任務實現
靜態定時任務實現 基於註解來建立定時任務 configuration enablescheduling public class scheduletask 基於資料庫的動態定時任務實現 將定時任務配置在資料庫,啟動專案的時候,用mybatis讀取資料庫,例項化物件,並設定定時任務。如果需要新增,減少...