2016-07-13 2 views
0

제작자에서 다른 DC의 카프카 노드로 메시지를 보내려고합니다. 생산자와 소비자 모두 기본값 인 0.10.0.0으로 설정되며 메시지 크기는 너무 작지 않습니다 (약 500k). 나는이 예외가 발생하고 메시지를 보낼 때 대부분의 시간 : 위해 브로커에서 메타 데이터를 요청하면서 1 개 기록 (들)을 포함하는 일괄 처리 시간 종료로 인해 만료 : org.apache.kafka.common.errors.TimeoutException이Apache Kafka : TimeoutException 및 그 다음 작동하지 않음

을 주제 -0 org.apache.kafka.common.errors.TimeoutException : 구성된 최대 차단 시간 60000 ms 내에 메모리를 할당하지 못했습니다.

그리고 더 이상 메시지가 전송되지 않습니다. 나머지 메시지에 대한 콜백도 호출되지 않습니다.

+0

구성되었는지 여부는 server.properties에서 확인해야합니다. listers = PLAINTEXT : //your.host.name : 9092 올바른지 여부. – NangSaigon

+0

정확하고 포트가 열려 있습니다. – AmirHossein

답변

1

batch.size = 0으로 설정하면 문제가 해결됩니다.

+0

해답을 가져 주셔서 감사합니다. 그런데 왜 그런가? – AmirHossein

+1

Kafka 설명서에 따르면 "배치 크기가 작 으면 배치가 덜 일반적이며 처리량이 줄어들 수 있습니다 ** (배치 크기 0은 배치를 완전히 불가능하게합니다) ** 매우 큰 배치 크기는 메모리를 조금 더 낭비 할 수 있습니다. 추가 레코드를 예상하여 지정된 배치 크기의 버퍼를 항상 할당하십시오. " – Aby

+0

하지만 배치 작업으로 인해이 문제가 발생하는 이유는 무엇입니까? – AmirHossein

2

오늘도 똑같은 오류가 발생했기 때문에 차임을하고 싶었습니다. 나는 request.timeout.ms을 늘려 batch.size으로 줄이고 심지어 batch.size을 0으로 설정하려고 시도했습니다. 그러나 아무 것도 효과가 없었습니다.

서버가 10 개의 카프카 클러스터 노드 중 하나에 연결할 수 없어서 밝혀졌습니다. 그래서, 내가 본 것은 부적절한 예외들이 던져지는 것입니다. 그건 그렇고, 카프카 0.9.0.1을 사용하고 있습니다.

관련 문제