【问题标题】:Puma "Early termination of worker" investigation difficult彪马“提前解雇工人”调查困难重重
【发布时间】:2021-02-20 22:12:40
【问题描述】:

我只更新了我的应用程序的 gem 并移至 Rails 6.1.0.rc1,现在无法运行 puma。我看到很多消息说[7XXXX] Early termination of worker

我可以通过运行 bundle exec puma -p 3000 -e production 在本地复制它,但我在 log/production.log 或任何其他环境的日志中看不到任何其他输出。

此时,除了等待新的 Rails rc 之外,我不确定如何找到问题的根源。如果我运行bundle exec puma -C config/puma.rb -p 3000bundle exec rails s 也没有问题。

其他详情

Gemfile

gem 'puma', '~> 4.1'

Gemfile.lock

puma (4.3.6)

我更新到 Puma 5.0.4,所以我可以在 Control/Status Server Puma 上使用 thread-backtraces 方法可以运行。它能够为我提供以下输出,稍后我将深入研究,但它似乎没有提供确凿证据。

[
    {
        "backtrace": [
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/cluster.rb:412:in `select'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/cluster.rb:412:in `run'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/launcher.rb:171:in `run'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/cli.rb:80:in `run'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/bin/puma:10:in `<top (required)>'",
            "~/.rvm/gems/ruby-2.7.2/bin/puma:23:in `load'",
            "~/.rvm/gems/ruby-2.7.2/bin/puma:23:in `<main>'",
            "~/.rvm/gems/ruby-2.7.2/bin/ruby_executable_hooks:24:in `eval'",
            "~/.rvm/gems/ruby-2.7.2/bin/ruby_executable_hooks:24:in `<main>'"
        ],
        "name": "Thread: TID-5ic"
    },
    {
        "backtrace": [
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/plugin/tmp_restart.rb:21:in `sleep'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/plugin/tmp_restart.rb:21:in `block in start'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/plugin.rb:68:in `block (2 levels) in fire_background'"
        ],
        "name": "Thread: TID-5iw puma plugin background 0"
    },
    {
        "backtrace": [
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/reactor.rb:70:in `select'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/reactor.rb:70:in `select_loop'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/reactor.rb:34:in `block in run'"
        ],
        "name": "Thread: TID-5jg puma reactor"
    },
    {
        "backtrace": [
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/thread_pool.rb:308:in `sleep'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/thread_pool.rb:308:in `block in start!'"
        ],
        "name": "Thread: TID-5k0 puma threadpool reaper"
    },
    {
        "backtrace": [
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/thread_pool.rb:308:in `sleep'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/thread_pool.rb:308:in `block in start!'"
        ],
        "name": "Thread: TID-5kk puma threadpool trimmer"
    },
    {
        "backtrace": [
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/server.rb:323:in `select'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/server.rb:323:in `handle_servers'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/server.rb:258:in `block in run'"
        ],
        "name": "Thread: TID-5l4 puma server"
    },
    {
        "backtrace": [
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/launcher.rb:219:in `backtrace'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/launcher.rb:219:in `block in thread_status'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/launcher.rb:215:in `each'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/launcher.rb:215:in `thread_status'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/app/status.rb:59:in `call'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/request.rb:76:in `block in handle_request'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/thread_pool.rb:337:in `with_force_shutdown'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/request.rb:75:in `handle_request'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/server.rb:430:in `process_client'",
            "~/.rvm/gems/ruby-2.7.2/gems/puma-5.0.4/lib/puma/thread_pool.rb:145:in `block in spawn_thread'"
        ],
        "name": "Thread: TID-5og puma threadpool 001"
    }
]

【问题讨论】:

  • 你能添加一些日志吗?也请查看stackoverflow.com/a/62079968。它可能会帮助你
  • 谢谢@Vishal。我在发布自己之前阅读了该帖子,但我在本地遇到了问题。我将更新我的帖子以包含版本信息。主要问题是我找不到任何日志来阅读或发布比我更好的思想! log/production.log 没有添加任何内容,唯一的 STDOUT 是提前终止消息。

标签: ruby-on-rails puma


【解决方案1】:

出乎意料!

pumactlcontrol-url 有所帮助,但我的一个朋友提出了最好的想法,我只希望更明显,

您是在其他服务器上抛出错误吗?

我跑了gem install thinRAILS_ENV=production thin start 终于向我展示了我正在寻找的错误!

事实证明,我不应该使用像add_template_helper 这样的非公共方法,因为ActionMailer::Base 可能并不总是得到ActionController::Base 的所有方法。我在开发中没有看到这个错误,因为 Rails 不会急切地加载你的所有类。

【讨论】:

  • 太棒了.. !!也许这个答案会在未来帮助很多人。
  • 我希望它会。如果我拼凑时间,我想找出为什么我无法从 puma 轻松获得这些信息。但是,我的朋友对使用另一台服务器的顿悟是主要的收获,因为我相信以后会再次派上用场。
  • 确实,朋友总是把我们从问题中解救出来:)
  • 哇不错! Thin 确实打印了完整的堆栈和错误!
猜你喜欢
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 2014-03-12
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多