You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails Console无法启动:无可用线程死锁问题求助

问题:Rails控制台启动失败(ActiveJob递归触发导致死锁)

环境信息

  • Rails版本:7.0.4
  • Ruby版本:3.1.2

问题背景

我写了一个ActiveJob类用来从服务器采集数据并存到数据库,为了触发任务,我在config/environment.rb里加了MyJob.perform_later,并且在Job的perform方法里递归调用MyJob.set(wait: 1.minutes).perform_later来实现定时循环。之后执行bin/rails console就再也启动不了了。

错误日志

$ ./bin/rails console
.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-7.0.4/lib/active_record/base.rb:282:in `<module:ActiveRecord>': No live threads left. Deadlock? (fatal)
3 threads, 3 sleeps current:0x000000010b0e22b0 main thread:0x0000000139e04610
* #<Thread:0x0000000100fa4d48 sleep_forever>
   rb_thread_t:0x0000000139e04610 native:0x000000010103c580 int:0
   
* #<Thread:0x0000000106403e48@DEBUGGER__::SESSION@server .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.6.2/lib/debug/session.rb:154 sleep_forever>
   rb_thread_t:0x000000010a6b9190 native:0x000000016f1b7000 int:0
   
* #<Thread:0x00000001065f1b60@worker-1 .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:332 sleep_forever>
   rb_thread_t:0x000000010b0e22b0 native:0x000000016f3c3000 int:0
   
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-7.0.4/lib/active_record/base.rb:15:in `<main>'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/zeitwerk-2.6.1/lib/zeitwerk/kernel.rb:35:in `require'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-7.0.4/lib/active_record/railtie.rb:62:in `block in <class:Railtie>'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:273:in `block in run_console_blocks'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:298:in `each'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:298:in `each_registered_block'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/railtie.rb:273:in `run_console_blocks'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/application.rb:526:in `block in run_console_blocks'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/engine/railties.rb:15:in `each'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/engine/railties.rb:15:in `each'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/application.rb:526:in `run_console_blocks'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/engine.rb:449:in `load_console'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:35:in `initialize'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:19:in `new'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:19:in `start'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:102:in `perform'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/command/base.rb:87:in `perform'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/command.rb:48:in `invoke'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<main>'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
        from .asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
        from ./bin/rails:4:in `<main>'

排查方向

我怀疑问题出在ActiveJob的线程管理或者ActiveRecord的数据库连接上,但试了好几种方法都没解决,求帮忙。


内容的提问来源于stack exchange,提问作者nickeys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:10:31