Lightsail에서 빌드를 완료할 수 없습니다

안녕하세요, Rebuild app has stuck 과 Background saving terminated with success 의 문제와 동일한 증상을 겪고 있는 것 같습니다. 다만 저는 재시작 유무와 관계없이 빌드 프로세스를 여러 번 재시도해 보았습니다.

저는 2vCPU, 1GB RAM 사양의 Lightsail 인스턴스에서 Ubuntu 20.04를 실행하고 있습니다. 여기의 다른 토론을 참고하여 db_shared_memory를 256MB로, Unicorns를 4로 수동으로 수정했습니다. discourse-setup, discourse-doctor, launcher rebuild app을 모두 시도해 보았지만, 모두 동일한 동작을 보입니다.

로그에 다음과 같은 내용이 표시됩니다.
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
하지만 MKJ's Opinionated Discourse Deployment Configuration 에 있는 설정을 적용해 보았지만 도움이 되지 않았습니다.

빌드 프로세스가 다음 부분에서 멈춥니다.

...[Babel: select-kit > applyPatches]
...[@embroider/compat/app]
...[@embroider/webpack]
...[@embroider/webpack]
107:M 22 Jan 2025 14:37:30.565 * 1 changes in 3600 seconds. Saving...
107:M 22 Jan 2025 14:37:31.648 * Background saving started by pid 854
854:C 22 Jan 2025 14:37:34.940 * DB saved on disk
854:C 22 Jan 2025 14:37:35.092 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
107:M 22 Jan 2025 14:37:35.341 * Background saving terminated with success

이 문제를 해결하기 위해 제가 할 수 있는 방법이 있을까요? 조언을 부탁드립니다. 감사합니다.

스와프 공간이 얼마나 있나요? 3~4GB로 늘려 보시는 것도 좋습니다.

해당 프롬프트에서 얼마나 오래 방치해 두셨나요?

1GB는 많지 않은 편입니다. 해당 VM에서 다른 작업이 실행되고 있나요?

문제의 원인은 아니지만, 왜 20.04를 사용하나요? EOL이 4개월 남았네요.

죄송합니다. 22.04입니다. 그 외에는 아무것도 실행되지 않았습니다. 확실히 1시간 이상 방치해 두었습니다. 지금 스왑을 늘리는 중이니, 조언해 주셔서 감사합니다.

부수적으로, 제 VM의 RAM이 1GB를 약간 밑돌아서 메모리 체크 주석을 처리해야 했습니다. 이것이 discourse-setup가 아래 내용을 출력하는 이유인가요?

Found 0GB of memory and 4 physical CPU cores
setting db_shared_buffers = 0MB
setting UNICORN_WORKERS = 0
containers/app.yml memory parameters updated.

메모리를 GB로 변환하는 방식이나 CPU 코어 카운팅 방식에 어떤 문제가 있는 것일 수 있습니다.

요즘에는 1GB는 정말 빠듯합니다. 2GB를 강력히 권장합니다.

아직 커뮤니티 규모가 매우 작고, 자금도 학술계에서 지원받고 있어서 월 10달러 이하로 유지하려고 최선을 다하고 있습니다. 불가능한 것으로 판명되면 규모를 확대하겠습니다. 감사합니다!

10달러 미만의 것이 많습니다

Lightsail은 잘 모르겠지만, Hetzner에서는 월 5유로에 2 vCPU, 4GB RAM, 40GB NVMe를 사용할 수 있습니다. 미국에도 서버가 있습니다.

제안해 주셔서 감사합니다. 이 프로젝트의 다른 모든 것이 AWS에 호스팅/관리되고 있어 AWS에 다소 묶여 있는 상태이지만, 상황이 그렇게 된다면 다른 곳으로 이전하는 것을 반드시 고려해 보겠습니다.

스왑을 늘리니 이전보다 훨씬 더 멀리까지 진행되었지만, 빌드가 완료되기 전에 ssh 연결이 타임아웃되었습니다(약 2시간 실행 후).

1,000번의 Babel: discourse-plugins > applyPatches 사이에서 마지막으로 식별할 수 있는 출력은 [WARN] (broccoli-terser-sourcemap) Minifying "assets/browser-detect.js" took: 43325ms (more than 20,000ms)였습니다. 여기서 더 많은 스왑을 주는 것이 도움이 될까요, 아니면 더 많은 RAM을 살펴봐야 할까요?

tmux 또는 screen을 사용해서 세션에 다시 연결할 수 있도록 해보세요.

제 추측으로는 RAM/메모리가 부족했던 것 같고, 스왑을 늘리면 더 멀리 갈 수 있을 수 있지만, 다시 한번 RAM을 더 늘리는 것을 권장합니다. RAM이 더 많은 환경으로 리사이즈하고, 디스크 크기는 그대로 두며, RAM이 더 많은 상태로 빌드를 재구축한 후, 실행이 정상적으로 되면 VM을 원래의 더 작은 크기로 다시 리사이즈하는 것이 가능할 수 있습니다.

Lightsail에서 이것이 가능한지, 혹은 쉬운지는 잘 모르겠습니다.

현재 스왑 용량은 얼마나 되나요?

안녕하세요, 저는 2GB의 스왑을 사용하고 있었습니다. 결국 Lightsail에서 더 큰 용량의 VM을 선택했고, 문제없이 빌드되었습니다. 이 서비스에서는 용량 조정(확장/축소)이 불가능한 것 같습니다. 도움을 주셔서 다시 한번 감사합니다!

P.S: 여전히 메모리 오버커밋 경고가 뜨지만, 아무 조치도 취하지 않았습니다. 그럼에도 불구하고 활성화해야 하나요?

4GB로 늘렸다면 작동했을 수도 있습니다.

최근에 그 문제에 대해 신경 쓴 적이 없습니다. 제 도구가 이를 활성화하고 있고, 에러 메시지가 사라지지 않는다고 확신합니다. 대부분의 사용자가 그 메시지를 보지 않거나 완전히 무시하는 것이 매우 가능성이 높습니다. 결과는 사용자에 따라 다를 수 있습니다.

저는 정기적으로 확인하지만, 제 설치 환경에서는 정상적으로 작동하기 때문에 그냥 무시합니다 :smile:

그렇겠지요. 하지만 저는

이라는 내용을 보고, 설령 작동하더라도 빌드 시간이 엄청나게 길어질 것 같아 5달러를 지불하는 것이 마음의 평화를 위한 가치가 있다고 판단했습니다. 커뮤니티가 성장하여 이 업그레이드를 정당화할 수 있기를 바랍니다 :slight_smile:

2GB가 공식 입장인 건 알지만, 빌드할 때 RAM 사용량이 점점 늘어나서 RAM이 1GB뿐인 경우 더 큰 스왑 공간을 만드는 경우가 많습니다.

그렇게 말해 왔는데, 세계의 일부 지역에서는 $5가 다른 지역보다 훨씬 더 큰 금액입니다! :wink:

힌트를 잘 받아들였죠!

서버를 임대할 때는 아낄 수 있는 돈은 한 푼도 놓치지 않으려 하면서, 스팀에서 평생 안 할 게임을 20달러(약 28,000원)에 기꺼이 사거나, 별로 맛 없을 거라는 걸 알면서도 15달러(약 21,000원)짜리 피자를 사는 제 자신을 아직도 이해할 수가 없어요. :lolsob: