磁盘类型对RocketMQ实例性能有什么影响?
对生产RocketMQ实例消息的影响
RocketMQ会将收到的消息进行持久化,因此,消息生产的吞吐量会一定程度上受到磁盘规格的影响。在其它条件相同的情况下,磁盘吞吐量越高,生产消息的性能越好。当磁盘性能达到瓶颈时,磁盘访问时延会增加,进而导致生产消息请求时延增加,严重情况下可能造成生产消息失败。
对消费RocketMQ实例消息的影响
RocketMQ消息落盘使用的是顺序写,在新的消息生产到消息队列上时,会先将消息保存在内存中。如果消费者在启动消费时从最新的消息开始消费,则会直接从内存中获取消息进行消费。
当消费者不是从最新的消息开始消费时,RocketMQ需要从磁盘中读取历史消息保存到内存中,由此产生了冷读现象。如果有大量消费者触发冷读,使I/O压力飙升,可能会达到磁盘性能瓶颈,造成消费者拉取消息时延增大或失败,进而导致消费速率下降。
当您在使用RocketMQ消息队列时,请尽量避免同时触发大量冷读的场景(比如:批量对消费组消费进度重置或者业务批量上新时从某个历史位点开始消费)。在生产环境中,推荐为实例配备超高I/O及以上的磁盘,避免因为I/O瓶颈导致业务异常。