열정, 근면, 성장
가상환경 uwsgi와 전역 uwsgi 관련 에러 본문
1월에 처음 배포를 시도한 후로부터 systemctl status uwsgi 커맨드를 칠 때마다 아래와 같은 에러가 뜨면서 무한 재시작이 됐다. 그리고 그와 동시에 배포된 웹사이트 접속에는 문제가 없었다.
(PID 크기가 엄청 크다.)
몇개월에 걸쳐서 어느 정도 해결한 것 같다.
-----------------
클라우드: AWS EC2 프리티어(RAM 1GB, 스토리지 30GB)
서버: Linux Ubuntu
웹 프레임워크: Django
uwsgi - nginx
------------------
1. 프로젝트 venv의 uwsgi를 사용한다면 전역 uwsgi는 꺼야한다.
source venv/bin/activate
했다면 전역 uwsgi는 쓸 일이 없다.
그러나 아래 커맨드를 친다면
systemctl start uwsgi
이미 uwsgi -i uwsgi.ini 커맨드로 프로젝트 가상환경의 uwsgi로 웹사이트가 구동이 되고 있는데 전역에서 uwsgi를 또 시작하는 거라서 에러가 뜬다.
해결 참고)
uWSGI Failed with result 'protocol' 에러 해결
uwsgi.service: Failed with result 'protocol'의 에러에 97만번 정도 빠졌다. process 옆에 있는게 아마... 에러 문장을 아무리 구글링해봐도 이 에러는 별로 없어서 고전했었는데 이렇게 에러가 계속 나는데 어
growing-sub.tistory.com
2. 프로젝트 venv의 uwsgi만 사용한다면 uwsgi.service가 필요없다.
동일한 논지다. uwsgi.service는 전역 uwsgi를 사용할 때 필요하기 때문에... 수정해봤자 프로젝트 uwsgi에 아무 영향을 주지 않는다. 쓰지 않을 거라면 삭제해버리는 게 낫다.
나의 경우, 전역 sudo apt-get remove uwsgi를 통해 전역 uwsgi를 삭제했음에도 불구하고 status를 확인하면 내역이 떴다.
이 디버깅 과정들을 통해, 전역 uwsgi 삭제 후 uwsgi.service만 남겨놓은 채 sudo systemctl start uwsgi를 실행하면 제일 위의 사진과 같이 protocol 에러가 뜨는 것을 깨달았다.
uwsgi.service 삭제하기
sudo rm /etc/systemd/system/uwsgi.service
3. 메모리 문제
uwsgi가 혼자 restart 되고 난리나는 동안, 하루에 끽해야 5명 들어올 사이트가 여러 번 터졌다.
htop 커맨드를 통해 활성화된 프로세스를 확인해보니 어디서 문제가 발생하는 지 확인하기가 더 쉬웠다.
동시에 한 20개가 돌아가고 있던데 하나하나 kill 했다.
그러고도 메모리가 여유가 없다면 swap을 하는 것도 한 방법이다.
'코딩 > 디버깅' 카테고리의 다른 글
uWSGI Failed with result 'protocol' 에러 해결 (0) | 2023.04.16 |
---|---|
requirements.txt에 적힌 패키지 버전이 없을 때 (0) | 2023.01.01 |