首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >maxwell参数不合理导致的运行异常

maxwell参数不合理导致的运行异常

原创
作者头像
保持热爱奔赴山海
修改于 2025-08-14 11:20:22
修改于 2025-08-14 11:20:22
4320
举报
文章被收录于专栏:数据库相关数据库相关

早上收到告警,提示maxwell在不断重启(使用supervisor守护的)。看了报错如下:

可以看到是因为max.request.size 参数默认值过低导致的。看了下最早的报错时间段,大概知道原因了:最近对生产的一个大的log表加个定时清理的pt-archiver任务,maxwell接收到大量binlog然后因为默认的参数值过低导致无法序列化进而导致maxwell出现OOM。

那么根据提示改下maxwell的参数

代码语言:txt
复制
kafka.max.request.size=10485760

注意:

因为我这是maxwell消费binlog后存到kafka里面的,因此还需要改下kafka的参数,防止出现其他问题

kafka的参数也修改下,默认都是1MB,这里改为10MB

vim /usr/local/kafka/config/server.properties

代码语言:javascript
复制
max.request.size=10485760
message.max.bytes=10485760

然后,重启下kafka和maxwell。

再次查看maxwell的日志(如下图),可以看到maxwell配置文件中的 max.request.size 这个值已经生效了。

但是,从后续的日志看,maxwell还是报错OOM。

这里的判断过程就是纯经验了,maxwell为啥OOM? 就是暂存的东西太多了。

那么看下日志里面maxwell启动日志中在控制台输出的运行参数,可以看到 max.block.ms =60000 ,这表示如果kafka端写入阻塞(或不可用)则这些序列化后的消息会堆积在maxwell内存中,这样就可能导致maxwell出现OOM的情况。

因此,最终修改后的maxwell配置增加了如下2行:

代码语言:javascript
复制
# 攒批最大报文10MB(这个值需要小于低于kafka broker端的配置值)
kafka.max.request.size=10485760

# 攒批最多等待5秒
kafka.max.block.ms=5000

然后,再重启下maxwell,可以看到参数都生效了,maxwell的日志里也没有oom相关报错了。

此外,建议将maxwell中的其它几个kafka默认参数也优化下,例如

代码语言:txt
复制
# 失败重试 3 次
kafka.retries=3

# 每次重试间隔 1 秒
kafka.retry.backoff.ms=1000

# 控制 Producer 缓冲区大小(默认 32MB,如果消息量大可适当调大)
kafka.buffer.memory=67108864

# 设置 linger.ms 和 batch.size 优化批量发送(根据吞吐量权衡延迟)
kafka.linger.ms=100
kafka.batch.size=16384

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档