Elastic Beanstalkインスタンスの場合、アクセスすると常に504
ステータスコードレスポンスが返されます。ログを追跡すると、pumaアプリサーバーに次のログが表示されます。
==> /var/log/puma/puma.log <==
[27240] Early termination of worker
[27245] Early termination of worker
[27249] Early termination of worker
[27253] Early termination of worker
[27257] Early termination of worker
[27261] Early termination of worker
[27265] Early termination of worker
[27269] Early termination of worker
[27273] Early termination of worker
[27277] Early termination of worker
Early termination of worker
の意味とその理由さらに、ログは、リモート環境で直面しているタイムアウトエラーの原因を示している可能性がありますか? Railsアプリとプーマはローカルマシン(Mac OS Catalina 10.15)で完全に実行されます。ただし、上記のリモートElastic beanstalk環境では、タイムアウト504エラーが発生し、上記のプーマログは、ログに表示されます。
これは私のgemfileです:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
# Bundle Edge Rails instead: gem 'Rails', github: 'Rails/rails'
gem 'Rails', '~> 6.0.1'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4'
# Use Puma as the app server
gem 'puma', '~> 4.1'
# Transpile app-like JavaScript. Read more: https://github.com/Rails/webpacker
gem 'webpacker', '~> 4.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/Rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use haml view syntax
gem 'haml-Rails'
# the main komponent gem is broken for Rails 6, see:
# https://github.com/komposable/komponent/issues/133
gem 'komponent', github: '0x2C6/komponent'
gem 'elasticsearch', '~> 6.2'
gem 'redis'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Active Storage variant
# gem 'image_processing', '~> 1.2'
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.2', require: false
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'pry-Rails'
gem 'rspec-Rails', '~> 3.9'
gem 'dotenv-Rails'
gem 'awesome_print'
end
group :beta, :production do
gem 'puma_worker_killer'
end
group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/Rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'spring-commands-rspec'
# Avoid polling for changes (Windows)
gem 'wdm', '>= 0.1.0', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
end
group :test do
gem 'webmock'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
私の場合の問題は、使用されたピューマのパッチバージョンの違いでした。
その要点は、AWS Elastic Beanstalkがpuma 4.3.3
を使用していたときにpuma 4.3.5
を使用していたことです。
現在、Gemfileで使用されているpuma
のバージョンを正確に4.3.3
に修正して、AWS Elastic Beanstalkで使用されているスタックと一致させて、このエラーを回避する必要がありました。
同様の質問については、 ここでの私の答え に詳細があります。