Kafka 每天凌晨会出现生产者发送消息失败的情况, 重启后又能正常使用

nnmxyz 2019-10-21 02:28:04
springboot版本是2.0.1,
kafka-clients版本是1.0.1,
kafka server的版本是0.11

生产者配置只有 enable.idempotence: true 为特殊配置, 为了确保消息不会出现重复发送, 其余均为默认.

目前的情况是服务在每天凌晨的时候有一个topic会出现生产者阻塞的情况, 具体异常为:
Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException:
Expiring 2 record(s) for myTopic-3: 59349 ms has passed since last append

并且其他所有生产者都发送不了, 其他生产者也会出现异常:
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

但是只有这一个服务会出现这种情况, 其他20多个涉及kafka的服务均能正常消费和生产, 这个服务重启以后也能正常工作, 但是一到凌晨5-6点左右又会出现上述情况又需要重启.

目前查看了服务器网络, 内存, I/O,CPU等, 凌晨的消耗是很小的, 数据量也不大;
这个topic一天大概会有150w左右的数据量, 基本都在白天, 晚上大概会有不到10w的数据量.

现在就是搞不明白为何凌晨会出现这个问题.
...全文
3091 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
daveraa 2020-12-22
  • 打赏
  • 举报
回复
引用 8 楼 nnmxyz 的回复:
引用 7 楼 左沩 的回复:
你好解决了吗,能请教下吗
这个当时的原因是在send后,监听返回结果处理时有一行代码写的有问题,造成了阻塞,不晓得和你的场景是否一致
我也出现这种情况,send后的监听处理造成了阻塞,是因为get的问题吗?
nnmxyz 2020-12-22
  • 打赏
  • 举报
回复
引用 9 楼 daveraa 的回复:
引用 8 楼 nnmxyz 的回复:
[quote=引用 7 楼 左沩 的回复:]你好解决了吗,能请教下吗
这个当时的原因是在send后,监听返回结果处理时有一行代码写的有问题,造成了阻塞,不晓得和你的场景是否一致
我也出现这种情况,send后的监听处理造成了阻塞,是因为get的问题吗?[/quote] 是的,因为使用了无参不超时的get引起的
nnmxyz 2020-11-11
  • 打赏
  • 举报
回复
引用 7 楼 左沩 的回复:
你好解决了吗,能请教下吗
这个当时的原因是在send后,监听返回结果处理时有一行代码写的有问题,造成了阻塞,不晓得和你的场景是否一致
左沩 2020-09-22
  • 打赏
  • 举报
回复
你好解决了吗,能请教下吗
nnmxyz 2019-10-21
  • 打赏
  • 举报
回复
引用 5 楼 kkkkk0lllll 的回复:
数据量大正常,数据量小,出现断开情况,可以考虑 是否配置了 最大空闲时间 导致连接断开。


的确配置了最大空闲时间, 但是其他topic也是一样的配置啊, 像发送短信验证码的topic有时候几天十几天都没一条消息都好好的.这个topic就很奇怪.
kkkkk0lllll 2019-10-21
  • 打赏
  • 举报
回复
数据量大正常,数据量小,出现断开情况,可以考虑 是否配置了 最大空闲时间 导致连接断开。
nnmxyz 2019-10-21
  • 打赏
  • 举报
回复
引用 3 楼 ml_dark 的回复:
myTopic-3: 59349 ms has passed since last append
感觉这个主题有问题,删了重新建一个试试


重连就可以了, 服务一重启又可以续命一天, 而且是数据量小的时候容易出现问题, 很奇怪
ml_dark 2019-10-21
  • 打赏
  • 举报
回复
myTopic-3: 59349 ms has passed since last append 感觉这个主题有问题,删了重新建一个试试
nnmxyz 2019-10-21
  • 打赏
  • 举报
回复
引用 1 楼 ml_dark 的回复:
看下日志,看看这段时间点发送的数据内容是什么?再看看这段时间点内其他服务有无在搞什么事情?


看过日志了, 没有其他服务在大规模运行, CPU消耗不到5%, 内存不到40%, I/O和网络都是很正常的状态, 而且这个topic的处理逻辑还很简单, 基本就是透传, 服务会从上游topic接受消息然后转协议再发到这个topic, 这个topic的消费者是spark, 对数据进行计算.
ml_dark 2019-10-21
  • 打赏
  • 举报
回复
看下日志,看看这段时间点发送的数据内容是什么?再看看这段时间点内其他服务有无在搞什么事情?

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧