【问题标题】:Rails - Puma randomly failed to start a workerRails - Puma 随机无法启动工人
【发布时间】:2018-10-08 09:51:52
【问题描述】:

从独角兽升级到彪马后,我遇到了一个奇怪的错误;

有时当 worker 启动时,它们会以错误的 ruby​​ 版本启动,因此会导致错误。好像是随机的……

此错误导致我的应用程序出现 503,因为工作程序未正确启动。

这是我的错误:

app[web.3]: bundler: failed to load command: puma (/app/vendor/bundle/ruby/2.5.0/bin/puma)
app[web.3]: SignalException: SIGTERM

但我不在 ruby​​ 2.5.0 上

系统配置:

Ruby 版本:2.5.1

Rails 版本:5.1.4

彪马版本:3.11.4

(在 Heroku 上)

有人有想法吗?

编辑:

Procfile

web: bundle exec puma -C config/puma.rb
worker:  bundle exec rake jobs:work
shoryuken_worker:  bundle exec shoryuken -R -C config/shoryuken.yml

puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 4) # WEB_CONCURRENCY = 3
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 4) # RAILS_MAX_THREADS = 5
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RAILS_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

Gemfilegem 'puma'

Gemfile.lock : puma (3.11.4)

【问题讨论】:

  • 您是否使用bundle exec 启动您的应用程序?即bundle exec puma...?
  • 是的,捆绑执行 puma -C config/puma.rb
  • 就 Ruby 版本而言,您应该没问题。 2.5.x 版本的所有 gem 都存储在同一个文件夹中(因为它们都与相同的 2.5.0 Ruby API 兼容)。您使用的是正确的 gem 和 Ruby 版本。你的问题是另外一回事。确保 puma 在您的 gemfile 中。请考虑将您的 procfile、gemfile 和 config.rb 文件添加到您的问题中。
  • 嗨,感谢您提供的信息,您可以在 EDIT 中找到此信息
  • 您的 gemfile 必须不止这些...您正在尝试使用 ActiveRecord,这需要更多的 gem。你把unicorn gem 留在里面了吗?您可以在本地重新创建故障吗?您会在使用命令行时遇到错误:bundle exec puma -t 5:5 -w 3 -p $PORT -e production?...抱歉,我正在寻找救命稻草,因为我现在还看不到原因。

标签: ruby-on-rails ruby heroku puma


【解决方案1】:

在这里为尚未弄清楚这一点的任何人发布答案。

heroku config:set "BUNDLE_DISABLE_EXEC_LOAD"="true"

看到这个帖子:github puma issue

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2016-09-13
    相关资源
    最近更新 更多