2017-12-07 3 views
2

4 대의 Kafka 클러스터에서 메트릭을 모니터링했습니다. 필자는 카프카에 메시지를 쓰는 입력 응용 프로그램과이 메시지를 처리하는 Kafka Streams 응용 프로그램을 사용하여 위치 정보 변수로 분할 된 새로운 카프카 항목으로 다시 작성합니다.Kafka 브로커 요청 큐가 급증하여 스트림 시간 초과 예외가 발생했습니다.

클러스터는 메트릭에 의심스러운 항목이보고되지 않는 불확실한 시간 (일반적으로 2 또는 3 일) 동안 아무런 문제없이 실행됩니다. 그러면의 최대 값은 no 50 개 또는 60 개 요청에 대해 10 개가 넘는 요청이 있지만 단일 브로커에서만 발생합니다. 궁극적으로 Kafka Streams의 제작자 요청 대기열이 몇 분 안에 구축되고 시간 초과됩니다 (주제를 복제하지 않는 순간).

또한 Streams 응용 프로그램을 다시 시작하면 브로커 요청 대기열이 신속하게 다시 생성됩니다. 이 특정 요청하지만 (2 초 정도) kafka.network:type=RequestMetrics,name=RequestQueueTimeMs에 대한 높은 99 번째 백분위 수에 따라 그들 모두 만 (0.3 밀리 초)에 낮은 평균을 포함처럼

는 것 같습니다.

CPU 사용량이 정상입니다. 즉 하드 한도에 맞지 않습니다.

브로커가 건강에 좋지 않은 이유는 무엇입니까? 내가보아야 할 추가 측정 항목이 있습니까?

답변

1

갑자기 성능 저하가 발생하거나 CPU가 부족하여 시간 초과가 발생하는 경우 IO 문제가 발생할 가능성이 있습니다.

가장 좋은 측정 항목 중 하나는 kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs입니다. 로그 플러시 속도 또는 로그 플러시 대기 시간이 증가하면 Kafka가 디스크에 쓰는 데 문제가 있음을 의미합니다.

우리의 경우 페이지 캐시가 너무 자주 플러시되어 평균 쓰기 요청 크기가 감소하는 동안 쓰기 iops가 급증했습니다. 버스트 잔액이있는 EBS 인스턴스를 사용했기 때문에 버스트 버킷이 끊어져서 요청 큐가 생성되었습니다.

관련 문제