生产者客户端采用Java编写,采用spring的那一套东西
在CPU高负载下,Kafka写入延时很高(并不是Kafka不行,而是生产者CPU限制了),导致频繁的FullGC,内存dump下来看,是回调对消息的持有占据了太多的内存,导致内存爆掉,如果消息可以容忍丢失的,调低超时时间,默认60s太长了,正常就几ms,然后加上相关的监控,及时问题排查扩容啥的
虽然kafka有个buffer的大小可以调整,但是这个调整的是发送缓冲区,消息确实可以一直发直到buffer内存满后报超时丢弃,但是发送是很快的,消息会一直发送,但是响应的处理却跟不上(CPU限制),导致消息回调(这个会包含发送的消息)占满了内存,最终还是会内存爆掉
可能分析的不对,有大神还请指教