메모리 부족으로 인한 OOM Killer 발생으로 부트스트랩 실패

그 후 이를 피처 플래그 뒤에 두는 것이 좋은 방법일 수 있습니다. 그렇게 하면 내부에서 반복적으로 개선할 수 있기 때문입니다.

3개의 좋아요

네, 되돌려졌고 커밋은 이제 tests-passed 상태입니다:

알려주셔서 감사합니다. 불편을 드려 죄송합니다.

7개의 좋아요

이 revert가 OP의 문제도 해결했는지 궁금합니다. OP(@devnull)는 다음 오류를 보고했습니다:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

이것은 @pfaffman이 보고하지 않은 내용입니다.

또한 다음에 대해 언급하고 싶습니다:

RAM을 추가하면 성능이 향상될 수 있지만, 실제로 메모리 부족(OOM) 상태에서는 RAM+swap의 총량이 중요합니다. 메모리 부족 상황에서 swap을 추가해도 도움이 되지 않는다면, RAM을 추가해도 도움이 되지 않습니다.

@weallwegot의 보고에 따르면 4G의 swap을 추가한 후에도 실패가 지속되고 있으므로, 무언가(또는 무엇인가)가 실제로 매우 많은 메모리를 사용하고 있었던 것으로 보입니다.

2개의 좋아요

동일한 오류입니다. 백트레이스를 읽으면 네 번째 줄에 OOM에 대한 참조가 보입니다.

3개의 좋아요

말씀하신 내용은 모두 사실입니다. 그는 1GB 미만의 RAM을 보유하고 있는데, 이는 매우 적은 용량입니다. 따라서 이 문제가 없더라도 저는 여전히 더 많은 RAM을 추가할 것을 권장합니다. 사실, 2GB 미만의 RAM을 가진 사용자에게는 대부분 RAM 용량 증대를 권고합니다.

1개의 좋아요

제 경우 문제는 해결되었습니다. 앱을 다시 빌드하니 작동합니다. 노력해 주셔서 정말 감사합니다!

3개의 좋아요

(물론 조언은 충분히 이해하고 있습니다. 다만 그 논리가 오해의 소지가 있을 것 같아서요.)

2개의 좋아요

참고로, 해당 플러그인 두 개를 모두 설치하고도 아무 문제 없이 재빌드할 수 있었습니다. 다만 지금은 스왑이 6GB나 차지하고 있어서, 완전히 동일한 조건에서의 비교는 아닙니다. ㅎㅎ

4개의 좋아요

감사합니다! 다시 업무에 복귀했어요.

6개의 좋아요

참고로 방금 해당 변경사항을 다시 병합했는데, 이번에는 부트스트랩이 깨지지 않아야 합니다. 문제가 발생하면 알려주세요.

2개의 좋아요

방금 @pfaffman이 설명한 것과 동일한 유형의 실패가 bootstrap에서 발생했습니다… theme_test_helper에서 구문 오류가 발생했습니다. 더 많은 정보가 필요하시면 알려 주세요.

1개의 좋아요

에러 메시지를 여기에 복사해서 붙여넣어 주시겠어요? 또한 theme_test_helper와 theme_test_vendor 압축을 처리하는 주변의 출력 라인도 함께 보내주세요. 다음과 같은 형태여야 합니다:

12825804.271282336 Compressing: discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js
gzip -f -c -9 /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js > /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js.gz

brotli -f --quality=11 /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js --output=/var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js.br
Done compressing discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js : 6.85 secs
6061451.556507351 Compressing: discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js
uglifyjs '/var/www/discourse/public/assets/discourse/tests/_theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js' -m -c -o '/var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js' --source-map "base='/var/www/discourse/public/assets/discourse/tests',root='/assets/discourse/tests',url='/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js.map'"
Parse error at _theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js:27883,17
define("sinon", () => {
                 ^
ERROR: Unexpected token: punc «)»
    at JS_Parse_Error.get (eval at <anonymous> (/usr/lib/node_modules/uglify-js/tools/node.js:18:1), <anonymous>:71:23)
    at fatal (/usr/lib/node_modules/uglify-js/bin/uglifyjs:409:27)
    at run (/usr/lib/node_modules/uglify-js/bin/uglifyjs:347:9)
    at Object.<anonymous> (/usr/lib/node_modules/uglify-js/bin/uglifyjs:261:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:30)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
rake aborted!
Errno::ENOENT: No such file or directory @ rb_file_s_size - /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js
/var/www/discourse/lib/tasks/assets.rake:290:in `size'
/var/www/discourse/lib/tasks/assets.rake:290:in `block (4 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:181:in `block in concurrent?'
/var/www/discourse/lib/tasks/assets.rake:281:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:272:in `each'
/var/www/discourse/lib/tasks/assets.rake:272:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:181:in `concurrent?'
/var/www/discourse/lib/tasks/assets.rake:269:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

그리고 물론 나머지 플러그인, 테마 컴포넌트 등을 실행한 후에는 다음과 같은 결과가 나타났습니다:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 5128 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
29b7ee9f8297bdac0cc17dae6117ebe5aa94dcdf3f5dbfed4bf03b0bd7751cc0
** 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.
4개의 좋아요

컨테이너에 진입해서 uglifyjs의 버전을 확인해 주시겠어요?

./launcher enter app
uglifyjs --version

그리고 호스트 머신에 설치된 discourse_docker도 확인해 주세요:

git rev-parse HEAD
5개의 좋아요

@Osama @downey,

몇 시간 전 베이스 이미지를 업데이트했고, 이제 2015년에 작성된 JavaScript를 올바르게 컴파일할 수 있도록 새로운 베이스 이미지를 강제 적용하고 있습니다. @downey 님, git pull을 실행한 후 다시 빌드를 시도해 주시겠습니까? 이제 uglify 대신 terser가 사용되어야 합니다.

cc @pmusaraj

6개의 좋아요

다들 감사합니다. 가족과의 약속으로 저녁 몇 시간 자리를 비웠다가 이 업데이트를 보고 기뻤습니다.

좋은 소식: git pull을 실행하고 다시 빌드했는데, 모든 것이 정상적으로 작동하는 것 같습니다. (다만 가용 공간이 5GB 미만이라는 알림이 뜨서 오래된 Docker 이미지를 정리한 후 두 번째로 시도해야 했습니다.)

제가 아는 한 지금은 모든 것이 잘 작동합니다. :tada:

제 쪽에서 추가로 필요한 정보가 있다면 알려주세요.

8개의 좋아요