MQ實戰 | RocketMQ不同可用區導致消費不均衡
一、現象反饋
業務同學反饋有個服務在部署容器后不間斷收到積壓告警,該服務對積壓敏感,影響派單的時效性。原來部署到ECS上的服務沒有積壓情況,準備往容器遷移。下面是業務同學做的排除測試,另外容器當前在J/K可用區部署,而MQ集群部署在B/G/F區。
- 回退到原ECS部署積壓消失
- 在原可用區申請擴容ECS未出現積壓
- 在新的可用區J/K申請ECS出現積壓
備注: 很明顯該積壓與可用區有關系。
二、積壓監控
在遷移容器的過程中,同時有容器消費和ECS消費的節點,通過分區積壓進行對比。
ECS消費分區積壓監控
備注: 明顯ECS的節點沒有什么積壓。
容器消費分區積壓監控
備注: 積壓較多的分區分布在容器節點。
三、可用區耗時監控
J/F可用區延遲
G/B/K可用區延遲
備注: J/K區的延遲比其他可用區多0.5ms左右。
四、解決措施
既然由于可用區延遲引起,可以考慮一下幾種措施:
1.將MQ集群遷移到J/K可用區
由于其他可用區還有重要業務,明顯不可行。
2.將容器發布部署非J/K可用區
容器可以相對考慮可用區的均衡性,但是難以避免不同可用區混部,也不太可行。
3.提高消費能力
通過提高部署容器節點和增加消費線程池大小來提高消費能力可以起到立竿見影的效果。
本文轉載自微信公眾號「瓜農老梁」,可以通過以下二維碼關注。轉載本文請聯系瓜農老梁公眾號。