• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

kafka h2 포트 충돌 질문입니다!

21.05.02 20:37 작성 조회수 693

0

h2 를 실행중일때 kafka server 를 실행시키면

9092 가 이미 사용중이라는 오류가 뜹니다.

(zookeeper 는 정상 실행됩니다.)

Socket server failed to bind to 0.0.0.0:9092: Address already in use.

h2 를 실행안하고 kafka 서버를 실행하면 정상적으로 실행되지만 이후 h2 를 작동시키면 h2 콘솔에 연결 할 때 마다 연결이 되지 않으며

Connection is broken: "java.io.EOFException: localhost" [90067-200] 90067/90067

kafka 서버로그에는 

[2021-05-02 20:37:03,065] ERROR Exception while processing request from 127.0.0.1:9092-127.0.0.1:53315-0 (kafka.network.Processor)

org.apache.kafka.common.errors.InvalidRequestException: Error parsing request header. Our best guess of the apiKey is: 0

Caused by: java.nio.BufferUnderflowException

이러한 오류가 뜹니다..! 혹시 해결방법이 있을까요..?

답변 1

답변을 작성해보세요.

1

안녕하세요, 이도원입니다. 

Kafka Server를 기동하지 못하는 상황에서 위 에러가 발생하신다는 말씀이신가요? 그렇다면, 먼저 Kafka가 정상 작동되고, 토픽을 사용할 수 있도록 만들어 놓어야 할 것 같습니다. 

말씀하신 것처럼 Address already in use 오류가 발생하는 건 9092를 사용하는 Kafka Broker가 이미 사용중이기 때문이며, 이전 프로세스가 정상적으로 종료되지 않았거나, 시스템내에서 다른 프로세스가 이미 사용중인것을 의미합니다. 따라서, 해당 프로세스를 찾아 중지하시거나, 삭제해 보셔야할 것 같습니다. 

윈도우를 사용 중이시라면, 명령프롬프트(CMD)를 실행하신 다음, netstat -ano 명령어로 현재 사용중인 포트를 확인해 보실 수 있습니다. MacOS의 경우에는 sudo lsof -i :"포트 번호" 를 실행하신 다음 해당 프로세스가 검색되면, 삭제하실 수 있습니다. 

참고로, Kafka 실행 시 server.properties 파일에서 listeners 부분에서 9092 이외의 포트를 지정하실 수도 있습니다.

감사합니다.