DavidO
(David)
1월 7, 2026, 8:10오후
1
S3 CDN URL을 변경했기 때문에 45,000개의 게시물을 다시 베이킹(rebake)하려고 하고 있는데, 메모리가 부족해서 프로세스가 계속 종료되고 있습니다.
스왑파일을 설정하는 방법에 대해 다음 글을 읽었습니다.
For servers with <= 4GB of RAM, running ./discourse-setup will prompt for and automatically create a 2GB swapfile.
Most cloud virtual machine providers do not set up swapfiles as part of their server provisioning.
In particular, upgrading Discourse produces a lot of memory pressure. With a swap file, rather than randomly terminating processes with an out of memory error, things will slow down instead. Having a swap file is a cheap insurance policy that protects you from many other lo…
첫 번째와 두 번째 명령은 잘 실행되었습니다.
빈 스왑파일 생성
install -o root -g root -m 0600 /dev/null /swapfile
'swapfile’이라는 이름의 2GB 파일 쓰기
dd if=/dev/zero of=/swapfile bs=1k count=2048k
하지만 mkswap /swapfile을 실행했을 때 오류가 발생했습니다.
mkswap error swapfile is mounted will not make swapspace
대신 다음 방법을 시도해 보았습니다.
What you get from
free
df -h
The install script has detected you have less than 2G of RAM and less than 2G of swap, and is trying to create a swapfile. According to the source , it doesn’t deal with the case where there is an existing swapfile. Probably you should remove the existing swapfile and try again. This might be enough:
swapoff /swapfile && rm /swapfile
free
swapoff /swapfile && rm /swapfile
그런데 다음과 같은 오류가 떴습니다.
swapoff: Not superuser
Digital Ocean Droplet을 사용 중이므로, 아마도 해당 작업에 필요한 권한이 없는 것 같습니다.
이런 장애물에 부딪히자, 대신 ‘uncooked’ 상태의 게시물만 다시 베이킹하는 명령을 실행해 보았습니다.
rake posts:rebake_uncooked_posts
수백 개, 운이 좋으면 수천 개 정도를 실행한 뒤 다시 종료됩니다. 어제부터 계속 지켜보느라 반쯤 지쳐버렸습니다.
속도를 조절(throttled)해서 실행할 수 있는 rebake 명령이 있을까요? 시간이 오래 걸려도 상관없습니다. 밤새 실행되든 뭐든, 실패만 하지 않으면 됩니다.
도움이 되실 수 있는 분이 있다면 정말 감사하겠습니다.
DavidO
(David)
1월 7, 2026, 8:13오후
2
신기하게도, 그 모든 글을 작성하는 동안 다시 한번 익히지 않은 상태로 실행을 돌렸습니다. 친구 몇 명과 함께 긴 점심 식사를 하러 나갔다가 돌아왔더니 100% 완료되어 있었습니다. 스왑파일이 마침내 제대로 작동하기 시작한 건지, 아니면 단순히 타이밍이 우연히 겹쳐서 사용량이 낮았던 건지 확신은 없지만…
드디어 완료!
혹시 답을 아시는 분이 계시다면, 다른 분이나 제가 다음에 시도할 때 도움이 될 수 있을 것 같습니다.
DavidO
(David)
1월 7, 2026, 8:22오후
4
감사합니다. 제가 제대로 한 건지 확실하지 않네요.
그렇게는 보이지 않습니다. 어떤 지침을 따르고 계신가요?
그리고 왜 컨테이너 안에서 스왑을 생성하시나요? 스왑은 컨테이너 내부가 아니라 호스트에서 생성해야 합니다.
DavidO
(David)
1월 7, 2026, 8:31오후
6
제가 제가 하는 일을 아주 약간만 알기 때문입니다.
그러면 ubuntu: 기본 레벨에서 생성하는 거고, ubuntu:/var/discourse나 ubuntu-app:/var/www/discourse 레벨에서는 아닌 건가요?
리베이킹 스로틀링에 대해 혹시 아이디어가 있으신가요?
리베이크가 스로틀링되는 것을 본 적이 없습니다. 비동기 방식으로 동작하며, 작업이 큐에 추가되어 백그라운드에서 처리됩니다.
DavidO
(David)
1월 7, 2026, 8:34오후
8
네, 감사합니다. 제 쪽에서는 리베이킹이 일단 완료되었으니, 운이 좋았다고 생각하고 더 이상 건드리지 않겠습니다.
경고 : 프로덕션 사이트에서 무분별하게 작업을 수행하지 마세요. 복구할 방법이 거의 없는 상태로 문제가 발생할 가능성이 높습니다.
아니요, ubuntu: 수준이 아닙니다.
스왑을 생성하기 전에 ./launcher enter app을 실행했나요? 만약 그렇다면, 그렇게 하지 말았어야 합니다.
서버에 처음 로그인하면 호스트에 있는 것이고, 앱에 진입하면 컨테이너 내부에서 작업을 수행하는 것입니다.
스왑은 호스트에 생성해야 하며, 애플리케이션은 컨테이너 내부에 존재합니다. 리베이크(rebake) 명령을 실행하려면 이 컨테이너에 접근해야 합니다.
DavidO
(David)
1월 7, 2026, 8:40오후
10
네, 조언해 주셔서 감사합니다.
저희 포럼은 그냥 친구들끼리 만든 거라 백업도 잘 되어 있어서, 한 일주일 정도 고생을 하게 되면 GroupMe를 쓰면서 버텨야겠죠.
pfaffman
(Jay Pfaffman)
1월 7, 2026, 8:47오후
11
이 메시지는 이미 swap파일이 존재하고, 그 이름이 /swapfile이며, 현재 사용 중임을 의미합니다.
크기를 늘리고 싶다면, 컨테이너를 중지한 후 마운트를 해제하고, dd 명령어를 사용하여 크기를 늘린 뒤, mkswap 명령어를 실행하면 됩니다.
다른 분들이 이 내용을 읽으신다면, 제가 사용하는 방법은 grep swap discourse-setup을 실행하여那里的 명령어들을 확인하는 것입니다. 수행해야 할 내용을 약간 더 쉽게 설명해 주는 방식입니다.
Canapin
(Coin-coin le Canapin)
1월 7, 2026, 11:33오후
13
여러분은 모르겠지만, 저는 긴 리베이크(rebake) 과정에서 반복적으로 메모리 부족(OOM) 오류가 발생했습니다. 스왑 공간을 2GB로 생성하니 상황이 개선되었습니다(더 많은 게시글이 리베이크되었지만), 그래도 한참이 지나면 OOM 오류가 다시 발생했습니다. 스왑을 4GB로 늘렸더니 모든 게시글의 리베이크를 성공적으로 완료할 수 있었습니다.
I increased the swap size from 2 to 4 GB, and the rebake worked.
So, I guess it was about memory, though I am a bit surprised by how much it asks (8 GB RAM + 4 GB swap), especially since older rebakes didn’t have any issues with no swap and the same amount of RAM.
What should I do if I want to monitor RAM usage and check for any issues? What metric should matter to estimate the memory requirements? Page views per day (5000-8000 + bot spikes once or twice a month)? Database size (23 GB)? …
이 가이드(Create a swapfile for your Linux server ) 외에는 스왑 파일에 대해 아는 것이 없었지만, ChatGPT가 충분히 지식을 갖추고 있어 문제없이 스왑 공간을 늘리는 데 도움을 주었습니다.
DavidO
(David)
1월 8, 2026, 3:11오후
14
제게는 어떤 영역에서 무엇을 해야 하는지에 대한 명확한 이해가 부족한 것이 문제입니다. 컨테이너 내부인지 외부인지, 아니면 앱 내부인지 외부인지에 대한 구분이요. 저는 좋은 메모를 남기려고 노력하고, 나중에 다시 쓸 것들에 대해 머릿속으로 단축키를 만들어 둡니다. 하지만 막상 이해가 되기 시작하면, 제가 해야 할 일이 끝나고 또 6개월에서 12개월, 혹은 18개월 동안은 그걸 건드리지 않게 됩니다. 그러면 다시 한 번 배우는 식이 되죠.
모든 시스템 관리자의 인생 이야기 같은 말이네요
제 해결책은 메모를 한 다음, meta에 작은 how-to(사용법) 글을 작성하는 것입니다.
This is a How-To for other self hosted administrators
I self host on a virtual private server (debian)
I use docker-mailserver to provide an email server for my Discourse instance. It is a really easy solution for simple transactional email server for Discourse. It saves the emails in files on the server and doesn’t need a database. It is a no-frills solution without an online interface or any other amenities, just postfix, dovecot, fail2ban and ClamAV.
Here are the Docs
Renew LetsEncrypt Ce…
위키 형태로 만들어서 다른 사람들이 실수나 누락된 부분을 발견하면 수정할 수 있게 하고, 다음에 이 같은 작업을 해야 할 때…