본문 바로가기

개발/AWS7

pm2 flag로 5분마다 재실행시키기 백그라운드로 파이썬 파일 실행 관리하기 해결한지는 좀 됐지만 그래도 잊어버리지 않게 정리하려고 한다. AWS에서 프로세스를 1~2개를 관리할때는 문제가 생기지 않았는데 4~5개를 관리하려고 하니까 문제가 많이 생겼다. 처음엔 nohup으 beomcoder.tistory.com 이렇게 만들고 나서 새로운 버전에 대한 프로젝트를 진행하고 있었다. 기존의 방식은 24시간동안 계속 돌아가면서 코드안에서 스케줄링으로 일정시간마다 실행시키는 방법이었는데, 이게 좋지 않다고 판단했다. 그래서 코드를 빨리 끝내고 백그라운드단에서 코드를 주기적으로 다시 실행시키는 새로운 방식으로 코드를 전부 새로 짜게 되었다. 테스트를 다하고 서버에 적용시켜보려고 pm2에 업로드를 시키게 되었다. 기존의 방식으로는 문제가 없었는데, 꺼.. 2024. 3. 6.
백그라운드로 파이썬 파일 실행 관리하기 해결한지는 좀 됐지만 그래도 잊어버리지 않게 정리하려고 한다. AWS에서 프로세스를 1~2개를 관리할때는 문제가 생기지 않았는데 4~5개를 관리하려고 하니까 문제가 많이 생겼다. 처음엔 nohup으로 백그라운드 관리하였는데 프로세스가 많이 생기고 백그라운드에서 돌아가다 보니까 메모리를 많이 잡아먹어 AWS 서버가 자주 꺼지는 일이 생겼다. 이것저것 찾아보다가 결국엔 pm2와 crontab, shell script로 해결했다. 해결방법은 마지막에 나와있어 바로 알고 싶으면 제일 아래로 내려가면 된다. 내가 해결하기 위해 노력한 방법들을 차례대로 기술해보려고 한다. 처음엔 nohup으로 자체로 해결해보려고 했다. 하지만 nohup만으로는 한계가 있었다. 그래서 다음으로 시도한 방법은 nohup으로 백그라운드.. 2023. 12. 21.
AWS 포트(방화벽) 연결 실수 해결 [ufw 문제] 포트를 열었어야 했는데 인터넷에서 다 찾아보고 했는데 연결이 안되서 정말 답답했었다. 나는 내가 모르는거나 안되는게 있으면 답답하고 어떻게라도 해결을 봐야해서 거의 새벽, 하루동안 구글, 스택오버플로우, GPT, 빙 등 모든 검색사이트에서 열심히 찾아보아서 해결했다. 나의 상황은 우선 플라스크로 간단하게 서버 백엔드와 통신해줄 API서버를 만들고 있었다. AWS에 서버를 하나 만들고 연결을 해서 서버를 만들고 있었는데 테스트서버와 본서버를 둘다 돌려야 하는 상황이었다. 그래서 포트를 하나 더 열어야했는데 8000번 포트는 원래 쓰고 있었는데, 추가로 테스트서버 포트 8001을 열어야 했다. 나의 AWS 서버에 들어가서 Security에 들어가서 인바운드규칙을 추가해주어야 한다. 여기서 이제 열고 싶은 포.. 2023. 10. 17.
라이브러리 import 순서에 따른 에러 로컬에서는 문제없이 돌아가는 코드가 AWS 서버로 옮기니까 다음과 같은 에러가 발생했다. terminate called after throwing an instance of 'std::runtime_error' what(): random_device could not be read 난생 처음보는 에러이고 로컬에서는 돌아가니 난감했다. 그래도 다행히 하나만 추가했는데 에러가 발생해서 금방 원인을 찾을 수 있었다. 내가 추가한건 ultralytics이고, import torch를 포함하는 라이브러리이다. 결론부터 말하자면 라이브러리 import 순서에 따른 AWS에서만 발생하는 에러였다. torch와 tensorflow를 동시에 import를 하면 에러가 발생하는데, torch를 먼저 import하고, te.. 2023. 7. 10.
AWS EC2 디스크 용량 늘리기 설치해놓은 라이브러리가 있었는데, 설치된줄 알고 서버를 돌렸는데 에러가 발생했다. 그래서 다시 라이브러리를 설치하는데 용량이 부족하다는 에러메세지가 떴다. 그래서 EC2의 디스크 용량을 늘리려고 한다. 먼저 AWS의 인스턴스에 들어간다. 인스턴스에서 용량을 늘릴 Instance ID를 클릭하고, Storage에 Volume ID를 클릭하여 들어간다. Volume ID에서 우클릭하여 Modify volume을 누른다. Size를 사용할만큼 늘리고 Modify를 누른다. 용량을 늘린 인스턴스의 Volume state가 회색에서 In-use 초록으로 바뀌고 ec2를 재부팅해주면 된다. (재부팅 하지 않으면 용량을 늘린게 적용되지 않는다) 나는 라이브러리를 마저 깔다가 용량이 더 필요하단걸 알게 되었다. 그래서.. 2023. 7. 7.
AWS pymysql [ 2006, "MySQL server has gone away (ConnectionResetError(104, 'Connection reset by peer'))] 에러 해결 AWS에서 백그라운드로 스케줄링코드를 돌렸는데, 2006, "MySQL server has gone away (ConnectionResetError(104, 'Connection reset by peer')) 에러가 발생했다. 이유를 찾는 도중에 연결을 해놓고 연결을 끊지 않아서 발생하는 에러였다. 한번씩만 실행할때는 연결을 끊지 않아도 코드가 종료되니 몰랐었다. 그래서 코드가 종료되면 연결을 끊고, 다시 코드를 돌리는 시간이 되면 연결하는 방식으로 바꾸었다. 2023. 6. 27.
EC2 파이썬 서버 항상 실행되게 하기 EC2 인스턴스도 새로 만들고, 파이썬 스케줄링도 다 했는데 AWS 우분투창을 끄면 파일도 같이 꺼져서 방법을 찾아야했다. 어떻게 해야할까 고민하다가 nohup이라는 명령어를 알게 되었다. nohup을 이용하면 백그라운드에서 실행시켜 창을 꺼도 유지가 된다. nohup은 "no hang up"(끊지마!)의 약자이다. 방법은 간단하다. 기존의 방법에서 앞 뒤에 nohup [기존 명령어] &이다. nohup python3 main.py & 이렇게 쓰고 엔터를 누르면 이 문구가 나오고 exit를 입력하고 엔터를 치고 다시 재접속을 해보면 된다. 다시 접속한다음 ps -ef | grep main # [실행시킨 파일 이름] 이라고 치고 실행하고 있으면 성공이다. 나는 처음에 main.py가 있는 폴더에 들어가서 .. 2023. 6. 27.