Когда я прохожу стресс-тестирование, я обнаруживаю, что доставка сообщения Kafka очень медленно.
Логика обработки данных такая:
Код: Выделить всё
private KafkaTemplate kafkaTemplate;
List receive_data = parse(httpRequest);
List processed_data = process(receive_data);
processed_data foreach {
kafkaTemplate.send();
}
Код: Выделить всё
"qtp1206051975-94" #94 prio=5 os_prio=0 tid=0x00007fe054034800 nid=0x34c waiting on condition [0x00007fdfeb4f2000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2163)
at org.apache.kafka.clients.producer.internals.BufferPool.allocate(BufferPool.java:143)
at org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:218)
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:942)
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:865)
Код: Выделить всё
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class.getName());
props.put(ProducerConfig.ACKS_CONFIG, "all");
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
props.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, CompressionType.ZSTD.name);
props.put(ProducerConfig.RETRIES_CONFIG, Integer.MAX_VALUE);
props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 60000);
props.put(ProducerConfig.BATCH_SIZE_CONFIG, 100);
props.put(ProducerConfig.LINGER_MS_CONFIG, 10);
props.put(JsonSerializer.ADD_TYPE_INFO_HEADERS, false);
TPS не увеличивается.
И мое весеннее приложение использует Jetty в качестве веб-сервера
Я изменил поток Jetty
Код: Выделить всё
server:
jetty:
threads:
max: 400
min: 20
Я хочу улучшить TPS приложения, теперь оно выглядит зависшим из-за скорости доставки сообщений Kafka.
п>
Подробнее здесь: https://stackoverflow.com/questions/789 ... e-too-slow