TIL

Kafka timeout 오류

개발 일지 2025. 2. 7. 16:22

 

 문제발생

 

배포된 사이트에서 채팅 기능을 사용중 해당 오류가 발생하였다. 바로 내가 보낸 메세지를 입력해도 서버에는 도착하지만 실제로 메세지가 전달되지 않는것이다.

 

docker logs hjchat-server

 

 

 

🆘 해결 과정

 

Disconnecting from node 2147483646 due to request timeout 로그를 통해 Kafka Broker가  Consumer와의 연결을 유지하지 못하고 타임아웃이 발생했다는것을 확인할 수 있었다.

아무래도 원인은 confluence/kafka -> bitami/kafka로 변경하면서 발생한 것으로 보여진다. (유일하게 바뀐 부분이기 때문에 이렇게 생각하였다.)

 

 

kafka 내부로 접속

docker exec -it a4306218fa67 /bin/bash

해당 명령어로 kafka 내부 접속

cd /opt/bitnami/kafka/bin
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic chat-messages --from-beginning

kafka의 chat-messages에서 메세지가 정상적으로 들어오는지 확인 

 

 

Kafka Consumer가 정상적으로 메세지를 소비하고 있는지 확인

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

Kafka Consumer로 등록이 되어있는것도 확인

 

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group hjchat-consumer-group --describe

hjchat-consumer-group이 정상적으로 등록되어있고  chat-messages TOPIC의 CURRENT-OFFSET과 LOG-END-OFFSET이  13으로 같기 때문에 정상적으로 메세지를 처리하고 있으며 LAG값이 0이기때문에 메세지를 처리하는데는 문제가 없는것을 확인할 수 있다.

 

그렇다면 도대체 무엇이 문제일까?

EC2 인스턴스에 접속하여 명령어를 수행할때 평소와 다르게 매우 속도가 느리다는것을 느꼈는데  

EC2 인스턴스의 모니터링을 해보니 CPU사용량이 갑자기 급증한 상태라는것을 확인할 수 있었다.

 

EC2 인스턴스를 중지했다가 다시 실행해보았다.

docker logs hjchat-server 를 통해 로그를 확인해 보니 이제 정상적으로 작동하는것을 확인할 수 있었다.

참고한 블로그: https://growth-coder.tistory.com/174

 

[AWS] EC2 속도가 급격하게 저하되는 현상 (time out)

EC2에 스프링 부트 서버를 배포해서 프론트엔드와 통신하던 도중 EC2 속도가 급격하게 저하되는 현상이 발생하였다. 처음에는 원할하게 잘 진행되다가 어느 순간부터 속도가 느려지더니 결국 time

growth-coder.tistory.com

https://steemit.com/kr-dev/@segyepark/aws-ec2

 

[개발] AWS EC2 서버가 아무 이유없이 심하게 느려질 때 해결 방법 — Steemit

안녕하세요. 박세계입니다. 원래 다음 시리즈의 2탄을 바로 준비했어야 했는데 늦은 새벽까지 해야할 일이 있어서 올리지 못했습니다. 감사하게도 기다려주시는 분들이 계신데 가능하면 오늘

steemit.com

공통적으로 EC2 인스턴스를 중지했다가 다시 시작하는 방법으로 해결했다는 점을 확인하고 동일하게 실시하였다.

 

 해결

 

결론 : 인스턴스를 중지했다가 다시 시작하니 해결되었다.

원인:  내가 사용하는 AWS 프리티어가 제공하는 t2.micro 인스턴스는  CPU, RAM, 네트워크 대역폭이 제한되기 때문에 KAFKA와 WEB-SOCKET, SPRING BOOT 서버를 실행할 경우에 메모리 부족 또는 네트워크 과부화로 인해서 서비스가 정상적으로 동작하지 않을수도 있다고 한다. 

해결방법:

1.EC2 인스턴스 업그레이드

2. Swap Memory를 설정하여 메모리 부족 방지

3. EC2 인스턴스 중지 후 다시 시작