디스크 공간 문제 외에도 업그레이드 프로세스가 드롭렛에 할당된 가용 메모리(1GB)를 초과했을 가능성은 없는지 궁금합니다. 위 콘솔 스크린샷에서 ./launcher rebuild app 실행 후 첫 번째로 기록된 항목으로 'Out of memory’가 언급되는 것을 확인하실 수 있습니다.
참고하지 못한 점은, 해당 시도를 한 후 콘솔이 응답을 멈췄다는 것입니다(그 시점에는 Digital Ocean 제어판의 웹 기반 콘솔을 사용 중이었는데, 이 콘솔은 항상 불안정합니다). 이후 저는 드롭렛의 전원을 재시작했습니다. (그 이후로는 PuTTY를 사용했습니다.)
어쨌든, 동일한 메모리 및/또는 디스크 문제를 겪었을 것으로 추정되는 상황에서 업데이트가 Discourse 업그레이드 페이지를 통해 성공으로 보고된 것은 좋은 상황이 아닙니다.
아, OOM 킬러가 실행되었네요. 분명 좋은 상황은 아닙니다. 보통 저는 스왑 공간을 늘리는 것을 권장합니다. 현재 사용량은 swapon 명령어로 확인할 수 있으며, 제 경우를 보면 다음과 같습니다.
# swapon
NAME TYPE SIZE USED PRIO
/swapfile file 2G 3M -2
또한 free 명령어도 있습니다.
# free
total used free shared buff/cache available
Mem: 1992060 792904 80148 34696 1119008 1004956
Swap: 2097148 3084 2094064
2GB 스왑 파일이 실제로 사용되고 있지 않다면 좋지 않은 상황이 될 것입니다. 디스크 공간을 사용하지 않고 스왑을 추가할 수 없다는 점도 문제입니다.
업그레이드를 위해 디스크 공간을 확보하는 방법 중 하나는 모든 백업 파일을 외부로 복사한 후 무결성을 확인하고 서버에서 삭제하는 것입니다. 업그레이드 과정에서 혹시 모를 사태에 대비해 안전하고 최신 상태의 백업이 어딘가에 꼭 필요하지만, 반드시 서버 자체에 있을 필요는 없습니다. 저는 최신 백업 하나만 남기고 나머지를 모두 삭제하는 것에 대해 편안함을 느낄 수 있지만, 반드시 오프라인으로 사본을 만들어 두겠습니다.
이제 모든 정리 작업을 마쳤으므로, du 명령어의 결과를 다시 확인해 보는 것이 좋습니다.
System load: 0.01 Processes: 136
Usage of /: 59.4% of 24.06GB Users logged in: 0
Memory usage: 73% IP address for eth0: 159.65.140.176
Swap usage: 17% IP address for docker0: 172.17.0.1
즉, 스왑 사용량 17%는 4GB를 의미합니까?
포럼에 로그인한 사람이 없고 현재 활성 상태인 연결이 PuTTY를 통한 드롭렛 연결뿐인데도 RAM 사용률이 73%에 달합니다. 따라서 포럼이 스왑 공간으로 넘어가게 만들 활동은 그리 많지 않을 것으로 보입니다. 만약 이것이 24GB 디스크 공간에서 차감된다면, 디스크 공간 사용률이 이미 높은 상태에서 업데이트를 진행할 때 완벽한 폭풍(최악의 상황)을 초래할 수 있지 않을까요?
du -kx / | sort -n | tail -33 명령을 실행하면 이제 다음과 같은 결과가 나옵니다.
이것은 다소 미래를 예측하는 범주에 속한다고 생각합니다. 5GB 디스크 공간에 대한 확인은 분명 도움이 되지만, 완벽할 수는 없습니다. 사용 가능한 RAM은 더 어렵습니다. 얼마나 필요한지 파악하기가 상당히 까다롭기 때문입니다. 이는 포럼의 규모가 얼마나 커졌는지에 따라 달라질 것이며, 아마도 각 업그레이드 과정에서 어떤 부분을 수정해야 하는지에 따라 달라질 것이라 생각합니다.
저는 비용을 최소화하는 데 주의를 기울이기 때문에, 저렴한 서버에 맞추기 위해 시간을 들입니다. 하지만 결국 포럼이 성장함에 따라, 상위 단계의 서버로 이동하는 것이 가치가 있을 것입니다. 비용은 들겠지만, 시간과 노력을 절약할 수 있을 것입니다.