카프카 제작자의 다양한 이유로 인해 종종 타임 아웃 예외가 발생합니다. 현재 생산자 구성에 모든 기본값을 사용하고 있습니다.
다음과 같은 시간 초과 예외를 보았습니다 :
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for topic-1-0: 30001 ms has passed since last append
다음 질문이 있습니다 :
<올>이 타임 아웃 예외의 일반적인 원인은 무엇입니까?
<올>타임 아웃 예외를 처리하기위한 일반적인 지침은 무엇입니까?
<올>시간 초과 예외가 재시도 가능한 예외이며 다시 시도해도 안전한가요?
Kafka v2.1.0 및 Java 11을 사용하고 있습니다.
미리 감사합니다.
- 답변 # 1
- 답변 # 2
"이 타임 아웃 예외의 일반적인 원인은 무엇입니까?"
<올>앞에서 본 가장 일반적인 원인은 메타 데이터 정보가 멈 췄기 때문입니다. 한 브로커가 다운되고 해당 브로커의 주제 파티션이 다른 브로커로 페일 오버되었습니다. 그러나 주제 메타 데이터 정보가 올바르게 업데이트되지 않았으며 클라이언트는 여전히 실패한 브로커와 대화하여 메타 데이터 정보를 얻거나 메시지를 게시하려고합니다. 시간 초과 예외가 발생합니다.
Netwowrk 연결 문제. 이것은
telnet broker_host borker_port
로 쉽게 진단 할 수 있습니다브로커가 과부하되었습니다. 브로커가 높은 워크로드로 포화 상태이거나 너무 많은 토픽 파티션을 호스트하는 경우 발생할 수 있습니다.
시간 초과 예외를 처리하려면 일반적인 방법은 다음과 같습니다.
<올>브로커 측 문제를 배제하십시오. 주제 파티션이 완전히 복제되고 브로커가 과부하되지 않았는지 확인하십시오.
있는 경우 호스트 이름 확인 또는 네트워크 연결 문제 해결
request.timeout.ms
와 같은 튜닝 매개 변수delivery.timeout.ms
내 과거의 경험은 대부분의 경우 기본값이 제대로 작동한다는 것입니다.
관련 자료
- Kafka Connect S3 소스 커넥터를 실행하는 ClassNotFound 예외
- java - catch 블록에서 예외를 처리하더라도 @ControllerAdvice로 봄에 예외를 처리하는 방법
- selenium - 오이 AmbiguousStepDefinitions 예외를 처리하는 방법?
- python - 까다로운 예외 처리 CloseSpider
- kotlin - 안드로이드 코 루틴은 예외를 처리
- c# - OnModelCreating으로 인해 시간 초과 및 예외가 발생합니다
- onexception - 아파치 낙타의 예외 블록에서 예외를 처리하는 방법
- 파이썬에서 문자열 예외를 처리하는 방법
- python - 이 읽기 시간 초과 오류를 올바르게 처리하는 방법은 무엇입니까?
- flink 연산자에서 예외를 올바르게 처리하는 방법은 무엇입니까?
- wcf - IClientMessageInspector에서 예외 처리
- laravel에서 InvalidSignatureException 예외를 처리하고 사용자 정의 오류 JSON 응답을 반환하는 방법
- 스프링 통합 흐름에서 FtpOutboundAdapter 연결 예외를 처리하는 방법
- java - Kafka 스트림에서 다른 시간대를 처리하는 방법?
- node.js - MongoClient에서 시간 초과 오류를 어떻게 처리 할 수 있습니까?
- python - django - 데이터베이스가 다운되었거나 연결할 수없는 경우 예외를 처리하는 방법은 무엇입니까?
- asynchronous - net이 없을 때 소켓 예외를 처리하는 방법은 무엇입니까?
- spring boot - 시간 초과 후 Kafka Producer가 다시 시도하지 않습니다
- java - PHP URL의 RecyclerView에서 null 예외 처리
- Blazor 하위 구성 요소를 호스팅하는 구성 요소/페이지의 예외를 처리하려면 어떻게해야합니까?
- java : SSL을 사용하여 Kafka에 Spring Boot 앱 연결
- openfaas 서비스에서 호출할 때 Kafka에 연결이 작동하지 않습니다.
- java : Map-updated에 능동적으로 대응
- java : 내 Kafka 스트리밍 응용 프로그램은 아무 작업도 수행하지 않고 code 0과 함께 종료됩니다.
- java : Flink -POJO를 Kafka Sink로 직렬화하는 방법
- java : 커밋은 한 번에 여러 이벤트 배치를 오프셋합니다.
- Kafka Producer에서 onFailure 콜백을 활성화하는 방법은 무엇입니까?
- java : kafka를 위한 봄의 Kafka 파티션 재조정
제작자와 브로커 모두에 대한 기본 Kafka 구성 값은 일반적으로 시간 초과가 발생하지 않도록 충분히 보수적입니다. 이러한 문제는 일반적으로 생산자와 브로커 사이의 비정상적인 네트워크를 나타냅니다.
당신이 얻는 예외,
Failed to update metadata
일반적으로 제작자가 브로커 중 하나에 연결할 수 없으며 메타 데이터를 가져올 수 없다는 효과가 있습니다.두 번째 질문으로 Kafka는 브로커가 완전히 확인하지 않은 메시지를 자동으로 보내려고 시도합니다. 응용 프로그램 쪽에서 시간 초과가 발생했을 때 catch하고 다시 시도하려는 경우 사용자에게 달려 있지만 1 분 이상 시간 초과하면 다시 시도해도 큰 차이가 없습니다. 어쨌든 브로커와 관련된 기본 네트워크/연결 가능성 문제를 파악해야합니다.
경험상 일반적으로 네트워크 문제는 다음과 같습니다.
포트 9092는 방화벽으로, 생산자 쪽 또는 브로커 쪽 또는 중간 어딘가에서 차단됩니다 (
nc -z broker-ip 9092
사용) 제작자를 실행하는 서버에서)DNS 해상도가 깨져서 포트가 열려 있어도 제작자는 IP 주소로 확인할 수 없습니다.