在发送小消息时,我们观察到Java Kafka Producer 0.9客户端的性能非常差.消息不会被累积到更大的请求批处理中,因此每个小记录都是单独发送的.
我们的客户配置有什么问题?或者这是另一个问题吗?
使用Kafka Client 0.9.0.0.我们没有在Kafka未发布的9.0.1或9.1固定或未解析的列表中看到任何相关的帖子,因此我们专注于我们的客户端配置和服务器实例.
我们了解linger.ms应该使客户端将记录累积到批处理中.
我们将linger.ms设置为10(并且还尝试了100和1000)但这些不会导致批量累积记录.记录大小约为100字节,请求缓冲区大小为16K,我们预计在一个请求中将发送大约160条消息.
尽管已经分配了一个新的Bluemix Messaging Hub(Kafka Server 0.9)服务实例,但客户端上的跟踪似乎表明该分区可能已满.测试客户端在没有其他I/O的循环中发送多个消息.
日志显示带有可疑行的重复序列:" 唤醒发件人,因为主题mytopic分区0已满或获得新批次 ".
因此,在我们的测试用例中,新分配的分区应该基本上是空的,那么为什么生产者客户端会获得一个新的批处理?
2015-12-10 15:14:41,335 3677 [main] TRACE com.isllc.client.producer.ExploreProducer - Sending record: Topic='mytopic', Key='records', Value='Kafka 0.9 Java Client Record Test Message 00011 2015-12-10T15:14:41.335-05:00' 2015-12-10 15:14:41,336 3678 [main] TRACE org.apache.kafka.clients.producer.KafkaProducer - Sending record ProducerRecord(topic=mytopic, partition=null, key=[B@670b40af, value=[B@4923ab24 with callback null to topic mytopic partition 0 2015-12-10 15:14:41,336 3678 [main] TRACE org.apache.kafka.clients.producer.internals.RecordAccumulator - Allocating a new 16384 byte message buffer for topic mytopic partition 0 2015-12-10 …