[Django] Django 프로젝트 중 맞닥뜨린 높은 벽들
# 이 글은 Django 기반 프로젝트를 진행하며 맞닥뜨린 여러 문제점들에 대해 서술한 글입니다.
# 아직 프로젝트가 끝나지 않았습니다.
220524
django 프로젝트가 돌아가고 있는 ec2 인스턴스가 계속해서 뻗어버리는 현상이 발생했습니다. ec2 인스턴스는 계속해서 아래와 같이 running 중이나, 상태 검사에서 1개의 검사가 통과를 하지 못했습니다.
이 현상과 관련하여 많은 검색을 하였지만,, 나오지 않아서 직접 aws re:post에 질문글을 남겨봤습니다. 하지만 답변은,,허허(220514 기준으로 답변이 달렸네요!)
직접 해결해보겠습니다.
저의 작고 귀여운 ec2가 뻗을만한 이유로는 크게 메모리 부족, 과부하 등이 있을 것 같습니다. 하나하나 찾아보자구용~
우선 메모리 부족인지 아닌지는 확인해볼 방법이 딱히 없었습니다. 뻗은 ec2를 고치기 위해서 인스턴스를 종료 후 다시 키는 작업을 반복하면서 그동안의 로그가 사라진 것 같은 느낌..? 그렇기에!! 빠르게 포기하고 다음 의심스러운 부분을 찾아나섰습니다.
과부하는 앞의 메모리 부족과 같은 맥락이긴 하지만, 대량의 데이터를 크롤링 해오는 코드가 cronjob으로 몇 시간을 주기로 실행이 되기 때문에, 이 부분에서 문제가 터진 것 아닐까? 했습니다. 다행히도 cronjob을 설정하며 로그를 남기도록 설정을 해놨고, 이 로그 파일을 위에서부터 천천히 읽어봤습니다. 그런데 중간에 아래와 같은 에러들이 있었습니다.
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)"), pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')와 같은 에러가 발생했습니다.(아래 사진 참고)
이 현상을 구글링 해보니,, 스택 오버 플로우 글이 하나 제 눈에 들어왔습니다.
위의 방법을 그대로 활용해봤습니다..
결과는 성공이였습니다. DB에서 허용하는 패킷의 크기를 넘겨서 mysql이 죽었었나봅니다.
댓글
이 글 공유하기
다른 글
-
[Django] DjangoAdmin.SearchFields에 ChoiceField가 필요했어
[Django] DjangoAdmin.SearchFields에 ChoiceField가 필요했어
2022.06.11 -
[Django] 프로젝트에 toast-ui-editor 적용하기(django admin)
[Django] 프로젝트에 toast-ui-editor 적용하기(django admin)
2022.06.10 -
Django 공식문서 요약 1
Django 공식문서 요약 1
2021.03.24 -
Django 상속
Django 상속
2021.03.02