어떤 상황이었는지 간략하게 설명하면 다음과 같습니다.
1. A라는 데이터가 있으며 용량은 1GB.
2. A를 가지고 Python으로 연산을 수행해 B라는 형태로 재가공해서 저장하려고 함.
3. 이때 B의 형태로 A를 연산한 결과물이 하나씩 램에 쌓임.
4. 계산하고 있던 서버가 서서히 멈추더니 갑자기 접속이 끊김.
5. 계산해보니 서버컴이 가진 램이 16GB인데 B를 저장할 경우 20GB가 필요함.
6. 아마도 메모리가 부족해서 컴이 뻗은 것 같음....
서버 OS는 우분투이고 도커에서 돌렸습니다.
내일 가서 재부팅해야 할 거 같습니다.
이런 상황에서는 암만 기다려도 코드 실행이 안 끝나는 거 같더라구요.
저 상황에서 컴퓨터 안에서는 어떤 일이 일어나는지, 해결책이 어떤 게 좋을지 알고자 질문드립니다.
1. 이 상황에서 내버려두면 언젠가 코드 실행이 끝나는 건가요 아니면 계속 저 상태에 남는 건가요?
2. 프로세스(이 경우 Python)의 램 사용량이 너무 높을 때 해당 프로세스를 강제로 종료할 수 있는 방법이 있을까요? 코드 실행에 실패하면 다시 돌리면 되니까 뻗는 거라도 방지하고 싶습니다.
비슷한 상황의 어느 회사의 어느 부서에 일이였는데
전산 담당이라서 개입할 이유도 없고 개입햇다가 괜히 불똥이 날라올까봐 걍 버로우 모드로 있었는데
"일단 뭔가 돌아가니까 냅둬보는게 낫지 않을까 하는 생각이 드는데요?"
라고 해서 냅둿더니 일단 작업이 완료가 되긴 햇습니다
그때 데이터 용량이 830메가 짜리였는데, 램 용량이 기억 안나네요.
3주 걸렸습니다... 파이썬 램 사용량 진짜 미치게 쳐먹긴했는데... 어짜피 그 프로젝트는 해야 하기에 걍 냅두는게 맞긴 하지만, PM과 사장 입장에선 전기세 ㅂㄷㅂㄷ 시간낭비 ㅂㄷㅂㄷ 해서 노발대발 했던 기억이 나네요