最近压测测试环境的java后台项目,通过高并发压测关键controller接口。

controller中,为了应对高并发情况,会把请求先扔到kafka的topic,然后由kafkalistener.java进行后续处理。

发现,2万条请求,200并发/秒时,java后台有时会出现不消费kafka队列消息的情况。(假设kafka的topic里有了2万条消息,可能java后台消费一半后,就不消费了)

此时后台日志如下(级别是info):

2022-03-24 14:19:45.647  INFO 3799 --- [ntainer#4-0-C-1] o.a.k.c.c.internals.AbstractCoordinator  : [Consumer clientId=consumer-6, groupId=commonGroupTest] Attempt to heartbeat failed since group is rebalancing



2022-03-24 13:48:26.724  INFO 3799 --- [ntainer#2-0-C-1] o.a.k.c.c.internals.AbstractCoordinator  : [Consumer clientId=con                     sumer-2, groupId=commonGroupTest] (Re-)joining group
2022-03-24 13:48:26.800  INFO 3799 --- [ntainer#2-0-C-1] o.a.k.c.c.internals.AbstractCoordinator  : [Consumer clientId=con                     sumer-2, groupId=commonGroupTest] Successfully joined group with generation 429

可能是kafka队列数据太多、java后台压力太大时,java后台就会退出kafka的group,停止接收kafka

等一段时间,java后台会尝试重新加入kafka的group;如果重新加入成功,后台就可以恢复正常(5分钟)

不过也可能java后台被压炸后,日志从无法打印,到时不时打印几句,最终还是无法恢复正常,无法继续处理kafka消息。(等了1个多小时还是不行)

此时就需要重启后台项目了…

Logo

大数据从业者之家,一起探索大数据的无限可能!

更多推荐