- Socker Receive Buffer: 네트워크 스레드로 가기전 머무는 버퍼. OS수준에서 제공
- Network Thread: 네트워크 관련 처리를 하는 스레드
- Request Queue: 네트워크 스레드의 요청이 저장되며 기본적으로 500개의 메시지가 저장된다
- I/O Thread: 실제 메시지 처리 스레드. 실제 디스크에 쓰는것이 아니고 Page Cache에 쓴다.
- Purgatory Area: Page Cache에 쓴 후 잠시 대기하는 곳. 복제가 될 때 까지 대기한다.
- Response Queue: 처리가 된 메시지들이 머무는 곳. 네트워크 스레드를 거져 Socker Send Buffer로 결과값을 돌려주게 된다.
성능개선 포인트
- Socker Buffer Size: 배치 사이즈를 고려하여 튜닝
- Thread Count
- JVM Heap Size: 브로커는 JVM 상에서 동작한다. heap size에 영향을 받는 곳은 Network Thread, Request Queue, I/O Thread, Purgatory Area. 브로커는 메모리를 사용하지 않아서 최대 6GB정도로만 권장하고 있다고 한다.
- Page Cache: 실제로는 Page Cache를 많이 사용하고 있어서 heap size는 적당히 할당하고 나머지 메모리는 Page Cache로 활용할 수 있도록 세팅
ex) Page cache가 32GB이고, 초당 write가 100MB라고 가정.
=> 100 * 320 = 32000. 320초 동안 producer한 메시지가 page cache에 존재할 수 있고, 디스크에 가기전에 Client에서 접근하면 좀 더 빠른 성능을 보장할 수 있다고 한다.
참조
브로커의 토픽 수 제한은 있으나 파티션 수의 제한은 없다고 한다.
'Kafka > Broker' 카테고리의 다른 글
Topic Naming Convention (0) | 2023.05.29 |
---|---|
Kafka TCP Connection에 대한 정리 (0) | 2023.05.29 |
Kafka Cluster의 성능과 고려요소들 (0) | 2023.04.23 |
Data Mount 경로가 여러 개 일때 용량많은 파티션 이동 시키기 (0) | 2022.11.02 |