RocketMQ提供了一个预热配置项warmMapedFileEnable默认为关闭状态。曾在文章RocketMQ存储--映射文件预热【源码笔记】分析过文件预热流程。在预热文件时会填充1个G的假值0作为占位符,提前分配物理内存,防止消息写入时发生缺页异常。如此特性正如文章标题所说,为何建议关闭RocketMQ预热配置呢?
一、服务端监控
1.日志监控
日志截图1.png 日志截图2.jpg 日志截图3.png2.CPU情况
CPU.jpg由服务端日志可以看出,在预热时broker会发生较长的耗时,10~30秒不等,CPU也会有小幅抖动,这会造成什么影响呢?接着看下文
二、客户端发送监控
在broker预热时,客户端耗时长达5秒。
发送监控1.jpg
在broker预热时,客户端耗时长达6秒
发送监控2.jpg
在此时间段,业务应用伴随着大量超时报警。
三、小结
在broker预热时,往往伴随着磁盘写入耗时过长、CPU小幅抖动、业务具体表现为发送耗时过长,超时错误增多。关闭预热配置从集群TPS摸高情况来看并未有明显的差异,但是从稳定性角度关闭却很有必要。
作者老梁,哈啰出行高级技术专家,参与了《RocketMQ技术内幕》审稿工作。专注后端中间件方向,已陆续发表RocketMQ系列、Kafka系列、gRPC系列、Sentinel系列、Java NIO系列。其中RocketMQ系列已发表40余篇。源码、实战、原理、调优期待与你一起学习。
image
网友评论