본문 바로가기
Programming/Python * Django

[Django] runserver 수행시 broken pipe 이슈 해결

by 고막고막 2021. 7. 5.

aws ec2 ubuntu에서 django runserver를 하던 중에 만났던 broken pipe 오류.

먼저 목적지 ip로 ping을 계속 날려봤지만 연결 안 됨!
구선생님에게도 물론 질문을 했지만, 대부분 응답시간 초과 관련된 처리라서 내 경우에는 해당이 안 되었음!
그럴리 없겠지만 혹시라도 인스턴스 문제일까 싶어 인스턴스 재부팅 해봤지만 응 아니야~!
그렇게 삽질 실패하고 시무룩 퇴근 길에...
broken pipe 에러는 대체 무슨 에러일까 하고 찾아보던중

pipe = socket

이라는 사실을 알게 됨.
고로
broken pipe error = "클라이언트가 연결을 시도하려 했을 때 서버의 소켓이 닫혀있어서 연결을 할 수 없어서 뜨는 에러"


왜 소켓이 닫혀있지???
뭔가 촉이 옴.
그리고 다음 날 출근하자마자 운영 서버 로그를 확인해 봤더니...


으악 😂
우려했던 것 보다 정말 간단한 문제라 해결은 금방 됨.
바로 전날 테이블 수정한 내역에 대해 migration을 진행하지 않아 runserver 자체가 안 되었던 것...
배포 시에는 debug = False로 놓다보니, migration 오류를 그대로 보여주지 않고 연결 문제라고 출력한 것으로 보여짐...

당연히 debug = True로 바꿔서 서버가 올라가지 않는 원인부터 파악했어야 했는데,

에러메시지만 보고 네트웍 문제로만 접근을 했었다.

물론 실제로 broken pipe error를 발생시키는 상황은 여러가지가 존재하겠으나,
이번처럼 쉽게 해결할 수 있는 경우가 있으니 오류 메세지에 쫄지 말고 로그를 잘 보자.
참고한 글 : https://may0301.tistory.com/10

✍ 느낀점

문제 발생시 항상 로그 먼저 제대로 파악하기
로그 모니터링 도입 시급