Ember CLI로 인한 JavaScript 힙 메모리 부족

안녕하세요!

저는 최소 사양 서버(2vCPU / 1GB / 40GB)에 Discourse를 설치하려고 하고 있습니다. (활용도가 높지 않을 것으로 예상되며, 비용을 절감하기 위함입니다)

이전에는 이러한 인스턴스에 Discourse를 설치할 수 있었지만, 오늘 다음과 같은 오류가 발생하고 있습니다. 포럼을 검색해 보았지만 다른 사람이 이 문제를 보고한 내용은 찾을 수 없었습니다.

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
...
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

스크립트의 권장 사항에 따라 discourse-doctor를 실행해 보았으며, Discourse가 실행되지 않는 것을 감지하여 재빌드(rebuild)를 시작했지만 결과는 동일합니다.

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1117 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
553da25c117d42161ef95845c6876a32810feaa4b5e651ac8118981884933982
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
==================== END REBUILD LOG ====================
Failed to rebuild app.

+1 최근 업데이트를 실행할 때 동일한 문제가 발생합니다. (docker-manager는 성공적으로 업데이트되었지만, 이는 discourse가 v2.8.0.beta11에서 v2.9.0.beta1로 업데이트되는 과정이었습니다.)

서버 사양을 공유해 주실 수 있을까요? RAM/스왑 용량이 얼마나 되나요?

가장 최근의 재빌드도 1GB 디지털 오션 드롭렛에서 실패했습니다. 임시로(?) 2GB로 리사이즈해야 할 것 같은데, 고민하는 동안 ./launcher restart app을 실행하고 재빌드 이전 버전으로 재시작했습니다. 이게 도움이 될지 모르겠네요?

root@test:/var/discourse# free -h
              total        used        free      shared  buff/cache   available
Mem:          976Mi       753Mi        80Mi        29Mi       142Mi        64Mi
Swap:         2.0Gi       131Mi       1.9Gi

저메모리 환경에서 디버깅할 수 있도록 새로운 Ember CLI 빌드 파이프라인을 일시적으로 되돌릴 예정입니다.

이 문제를 반영하도록 제목을 수정했습니다.

저는 gCloud e2-micro 인스턴스를 사용하고 있습니다 (0.25 vCPU와 1GB의 메모리를 갖춘 마이크로 머신 타입으로, 공유 물리 코어 기반)


수정: 왜 이런 일을 하는지 궁금한 분이 계신다면, 크롤러로부터 오는 트래픽이 사용자보다 많기 때문입니다. 우리는 소아 뇌졸중 환자의 가족과 생존자들에게 더 많은 접점을 제공하려 노력하고 있습니다. 최초 로드나 저장 시 약간 느리다는 점은 아무도 신경 쓰지 않으며, 무료 티어 Google Cloud에서 제공하는 가치는 도움이 됩니다.

추가 조사를 진행하는 동안 해당 변경 사항은 이제 되돌려졌습니다. 보고해 주신 모든 분들께 감사드립니다!

다른 재구성을 시도해 보세요. 이제 훨씬 잘 작동할 것입니다.