Performance Kafka Producer 0.9.0性能,大量等待线程

Performance Kafka Producer 0.9.0性能,大量等待线程,performance,apache-kafka,producer,Performance,Apache Kafka,Producer,我们正在以大约9000条记录/秒的速度向kafka集群中写入消息,有时我们会看到生产者的性能大幅下降,然后再也无法恢复。发生这种情况时,我们会看到以下错误“无法在超时内分配缓冲区”。下面是流程运行良好和达到坏状态时采取的JMX producer指标。当进程降级时,“等待线程”指标非常高,任何输入都会受到欢迎 生产者参数为 batch.size=1000000 linger.ms=30000 acks=-1 metadata.fetch.timeout.ms=1000 compression.ty

我们正在以大约9000条记录/秒的速度向kafka集群中写入消息,有时我们会看到生产者的性能大幅下降,然后再也无法恢复。发生这种情况时,我们会看到以下错误“无法在超时内分配缓冲区”。下面是流程运行良好和达到坏状态时采取的JMX producer指标。当进程降级时,“等待线程”指标非常高,任何输入都会受到欢迎

生产者参数为

batch.size=1000000
linger.ms=30000
acks=-1
metadata.fetch.timeout.ms=1000
compression.type=none
max.request.size=10000000
在缓冲区完全可用的情况下,错误为“org.apache.kafka.common.errors.TimeoutException:未能在配置的最大阻塞时间内分配内存”


有一次,您开始发送成批的1.000.000条消息,我认为这就是性能下降的原因。试着降低这个数字或将linger.ms设置得更低。

我对这个话题没有经验,但从我没有经验的角度来看,这个问题似乎更适合我。也许你应该阅读他们的文章,看看你是否认为你的问题能在那里得到更多的关注。同样,我对你的主题没有经验,但你的问题对我来说是一个很好的服务器故障问题。是的,批量大小为1M,在我遇到降级之前,它可以正常工作一段时间,我尝试过批量大小为500K,但仍然是相同的问题。从指标来看,大约有32M缓冲区可用,但是错误显示“无法在超时内分配缓冲区”您的linger.ms为30000,这意味着您发送了一个完整的批次或等待30秒,您是否尝试过降低此数字?我认为您的错误是一种瓶颈类型的情况。我认为这可能是卡夫卡poducer 0.9.0版本中的一个bug。每当缓冲池抛出“未能在配置的最大阻塞时间内分配内存”时,它也应该执行this.waiters.remove(moremory);。否则,在异常发生后,等待线程计数将永远不会达到0,并且不会发生批处理