【问题标题】:rufus + puma + heroku warningrufus + puma + heroku 警告
【发布时间】:2016-09-08 17:37:46
【问题描述】:

我在 heroku 上运行一个 Rails 应用程序,我有两个网络测功机。 我怎样才能删除!警告:在应用程序启动中检测到 1 个线程:警告?

我的 puma.rb 文件:

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

preload_app!

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

on_worker_boot do |worker_number| 
  # 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

日志:

2016-09-03T14:21:24.742960+00:00 app[web.1]: [3] * Listening on tcp://0.0.0.0:53786
2016-09-03T14:21:24.743135+00:00 app[web.1]: [3] ! WARNING: Detected 1 Thread(s) started in app boot:
2016-09-03T14:21:24.743181+00:00 app[web.1]: [3] ! #<Thread:0x007f382b59fca8@/app/vendor/bundle/ruby/2.2.0/gems/rufus-scheduler-3.2.2/lib/rufus/scheduler.rb:563 sleep> - /app/vendor/bundle/ruby/2.2.0/gems/rufus-scheduler-3.2.2/lib/rufus/scheduler.rb:571:in `sleep'
2016-09-03T14:21:24.743257+00:00 app[web.1]: [3] Use Ctrl-C to stop
2016-09-03T14:21:24.754941+00:00 app[web.1]: [3] - Worker 0 (pid: 7) booted, phase: 0
2016-09-03T14:21:24.756269+00:00 app[web.1]: [3] - Worker 1 (pid: 20) booted, phase: 0
2016-09-03T14:21:25.525174+00:00 app[web.2]: ** [NewRelic][2016-09-03 14:21:25 +0000 web.2 (18)] INFO : Doing deferred dependency-detection before Rack startup

【问题讨论】:

    标签: ruby-on-rails heroku puma rufus-scheduler


    【解决方案1】:

    这很容易。停止使用 rufus-scheduler。它正在使用线程,这就是导致您的警告的原因。

    看看:

    2016-09-03T14:21:24.743181+00:00 app[web.1]: [3] ! 
    <Thread:0x007f382b59fca8@
    /app/vendor/bundle/ruby/2.2.0/gems/rufus-scheduler-3.2.2/lib/rufus/scheduler.rb:563
    sleep> -
    /app/vendor/bundle/ruby/2.2.0/gems/rufus-scheduler-3.2.2/lib/rufus/scheduler.rb:571
    :in `sleep'
    

    Rufus-scheduler 显然是警告的原因。

    参见https://github.com/jmettraux/rufus-scheduler/issues/213

    现在有另一种看待事物的方式:警告不是由 rufus-scheduler 发出的,而是由 Puma 发出的。可能有一种方法可以禁用警告,但对于了解 Puma 的人来说,这是一个问题。

    【讨论】:

    • 这不是一个答案,如果我有其他使用线程的宝石(activerecord 5.2.4.2,elastic apm ....)示例:15437] ! #&lt;Thread:0x00007f7f2e2a9ec8@/Users/almokhtar/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:299 sleep&gt; '
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2016-08-06
    • 2016-06-20
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多