의식적으로 아무것도 변경하지 않았는데, 오늘 git pull을 실행하고 web_only.yml로 부트스트랩을 시도하니, 부트스트랩 프로세스가 시작된 지 약 90초 후에 오류가 발생합니다. 진단에 도움이 될 수 있기를 바라며, 오류의 마지막 부분만 붙여넣습니다:
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:348:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:511:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
I, [2022-12-29T10:28:07.806753 #1] INFO -- : gem install geocoder -v 1.4.4 -i /var/www/discourse/plugins/discourse-locations/gems/3.1.3 --no-document --ignore-dependencies --no-user-install
Successfully installed geocoder-1.4.4
1 gem installed
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1066 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** 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.
9b7ac0c88b42b2aa1eccb9ef291527f4afd8b71861669af66ab79dee5ed82a45
이전에는 성공적으로 부트스트랩이 완료되었던 동일한 yml 파일이 왜 이제 부트스트랩을 허용하지 않는지 이해할 수 없습니다. 제 사이트는 정상적으로 작동하고 있습니다.
'Discourse-Doctor’에서도 'error’를 찾을 수 없었습니다 (discourse doctor 결과 파일에서 'error’라는 단어만 검색할 수 있었는데, 해당 파일에는 없었습니다). 물론 저는 전문가가 아니지만요.
어제 ‘location’ 플러그인을 비활성화한 후 web_only 컨테이너를 정상적으로 다시 구축할 수 있었습니다. 하지만 오늘, 모든 플러그인을 하나씩 비활성화해도 부트스트랩이 여전히 실패하고 있습니다.
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 900 exit 137>
Location of failure: /usr/local/lib/ruby/gems/3.1.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'"]}
bootstrap failed with exit code 137
** 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.
2c5f01d5ca6b216e744e11547b121e64aac0ad5e37d64d2ec5e2f279fe766c6a
네, 컨테이너는 이미 시작되었고 웹사이트도 정상적으로 작동합니다. 하지만 동일한 컨테이너(web_only)를 재구축/부트스트랩하려고 하면 오류가 발생합니다. 어제는 같은 문제를 겪었을 때 ‘location’ 플러그인을 비활성화하니 성공적으로 부트스트랩할 수 있었지만, 오늘은 아무런 변경 사항 없이도 동일한 작업이 실패했습니다.
우분투 서버를 재부팅했는데, 덕분에 인스턴스에서 약 7~800MB의 여유 RAM을 확보할 수 있었고 부트스트랩도 성공했습니다. 원하는 플러그인을 활성화한 후에도 재빌드/부트스트랩이 성공하지 못했다면, 다음 BS 전에 컨테이너를 중지했을 거예요.
하지만 디스코스의 새로운 RAM 요구량에 깜짝 놀랐습니다. RAM을 4GB에서 8GB로 올리면 인스턴스/드로플릿 비용이 거의 두 배로 뛰거든요. 제 사이트는 매우 매우 매우 작은 사이트(하루 방문자 약 10명)인데, 이런 비용은 원치 않습니다. 이전에는 디스코스의 표준 설치에 RAM 1~2GB면 충분하다고 했었거든요.
현재 제 서버는 4GB 메모리를 사용하고 있으며, 방문자 수는 아직 매우 적습니다. 향후 8GB로 업그레이드하는 것을 고려하고 있습니다. (6GB 옵션은 없거든요.)
참고로, 구글에서 몇몇 글들을 보면 빈 메모리(free memory)의 양은 크게 중요하지 않다고 합니다. 이 메모리는 아무것도 하지 않는, 일종의 낭비된 메모리이기 때문이죠. 대신 필요할 때 사용할 수 있는 '가용 메모리(available memory)'를 확인하는 것이 더 좋다고 합니다. 제 경우 가용 메모리는 1.4GB입니다.
스와프 공간(swap space)을 추가할 수 있습니다. 리빌드에는 많은 RAM이 필요합니다. 또한 서버에서 Discourse 외에 다른 프로그램이 실행되고 있으므로 최소 요구 사양보다 더 많은 메모리가 필요합니다. 다른 사이트들이 트래픽을 받지 않고 있더라도, 다른 웹 서버가 실행 중이면 일부 메모리를 사용하게 됩니다.