4.4. 처리량 및 대기 시간을 위해 소비자 최적화
클라이언트 애플리케이션이 KafkaConsumer.poll() 을 호출할 때 반환되는 메시지 수를 제어합니다.
fetch.max.wait.ms 및 fetch.min.bytes 속성을 사용하여 Kafka 브로커에서 소비자가 가져온 최소 데이터 양을 늘립니다. 시간 기반 일괄 처리는 fetch.max.wait.ms 를 사용하여 구성되며, size 기반 일괄 처리는 fetch.min.bytes 를 사용하여 구성됩니다.
소비자 또는 브로커의 CPU 사용률이 높은 경우 소비자의 요청이 너무 많기 때문일 수 있습니다. 더 적은 요청과 메시지가 더 큰 일괄 처리로 전달되도록 fetch.max.wait.ms 및 fetch.min.bytes 속성을 더 크게 조정할 수 있습니다. 처리량을 크게 조정하면 일부 대기 시간이 드는 비용이 향상됩니다. 생성되는 데이터 양이 낮은 경우 더 많이 조정할 수 있습니다.
예를 들어 fetch.max.wait.ms 를 500ms로 설정하고 fetch.min.bytes 를 16384바이트로 설정하면 Kafka가 첫 번째 임계값에 도달하면 응답하는 소비자에서 가져오기 요청을 받습니다.
반대로 fetch.max.wait.ms 및 fetch.min.bytes 속성을 낮게 조정하여 엔드 투 엔드 대기 시간을 개선할 수 있습니다.
# ... fetch.max.wait.ms=500 1 fetch.min.bytes=16384 2 # ...
가져오기 요청 크기를 늘려 대기 시간 단축
fetch.max.bytes 및 max.partition.fetch.bytes 속성을 사용하여 Kafka 브로커에서 소비자가 가져온 최대 데이터 양을 늘립니다.
fetch.max.bytes 속성은 브로커에서 가져온 데이터 양에 대한 최대 제한을 한 번에 최대 바이트 단위로 설정합니다.
max.partition.fetch.bytes 는 각 파티션에 대해 반환되는 데이터의 최대 제한을 바이트 단위로 설정하며, 항상 max.message.bytes 에 대한 브로커 또는 주제 구성의 바이트 수보다 커야 합니다.
클라이언트가 사용할 수 있는 최대 메모리 양은 대략 다음과 같습니다.
NUMBER-OF-BROKERS * fetch.max.bytes and NUMBER-OF-PARTITIONS * max.partition.fetch.bytes
메모리 사용량을 수용할 수 있는 경우 이 두 속성의 값을 늘릴 수 있습니다. 각 요청에 더 많은 데이터를 허용하면 가져오기 요청이 줄어들므로 대기 시간이 향상됩니다.
# ... fetch.max.bytes=52428800 1 max.partition.fetch.bytes=1048576 2 # ...