Rocketmq 常見錯誤和性能優化,system busy, Rocetmq 參數配置

Rocketmq 相傳都是億級消息吞吐能力,但是配置不對,使用不當會導致Rocketmq的性能大大折扣
 

刷盤策略

首先在看問題之前我們看看Rocketmq的刷盤策略,RocketMQ 的所有消息都是持久化的,先寫入系統 PAGECACHE,然後刷盤。

總共有兩種刷盤策略 異步刷盤和同步刷盤

 

異步刷盤

    異步從表面意思我們也能看出來,我們消息首先存入內存,有異步線程來完成消息的持久化。

同步刷盤

同步刷盤與異步刷盤的唯一區別是異步刷盤寫完 PAGECACHE 直接返回,而同步刷盤需要等待刷盤完成才返回, 同步刷盤流程如下:

(1). 寫入 PAGECACHE 後,線程等待,通知刷盤線程刷盤。 (2). 刷盤線程刷盤後,喚醒前端等待線程,可能是一批線程。 (3). 前端等待線程向用戶返回成功。
 

綜上我們可以看出來異步刷盤的性能要遠遠大於同步刷盤

因爲我們是物聯網使用場景,允許小概率的事件丟失,所以我們選擇的是異步刷盤策略,雖然是異步刷盤,但是如果不優化配置還是會出現以下常見錯誤

  • [REJECTREQUEST]system busy, start flow control for a while
    
  • broker busy, start flow control for a while

如何優化呢

1、開啓異步刷盤,這個要根據業務需求來,金融系統就不建議了。

2、一定要開啓內存池化空間管理 ,效果非常明顯

    transientStorePoolEnable=true
    transientStorePoolSize=5  (一個代表1G,根據機器內存決定)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章