簡體   English   中英

Puma Listen循環錯誤:# <Errno::EBADF: Bad file descriptor> 在puma.rb配置中

[英]Puma Listen loop error: #<Errno::EBADF: Bad file descriptor> in puma.rb config

運行彪馬時,出現此錯誤:

2019-04-22 19:59:10 -0500: Listen loop error: #<Errno::EBADF: Bad file descriptor>
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:386:in `select'
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:386:in `handle_servers'
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:360:in `block in run'
2019-04-22 19:59:10 -0500: Listen loop error: #<Errno::EBADF: Bad file descriptor>
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:386:in `select'
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:386:in `handle_servers'
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:360:in `block in run'
2019-04-22 19:59:10 -0500: Listen loop error: #<Errno::EBADF: Bad file descriptor>
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:386:in `select'
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:386:in `handle_servers'
/Users/my_account/.rvm/gems/ruby-2.5.5/gems/puma-3.12.1/lib/puma/server.rb:360:in `block in run'
2019-04-22 19:59:10 -0500: Listen loop error: #<Errno::EBADF: Bad file descriptor>

我的puma.rb文件:

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

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

on_restart do
  puts "Puma restarting..."
end

app_dir = File.expand_path("../..", __FILE__)
log_dir = "#{app_dir}/log"

puts "LOG DIR: #{log_dir}"

if ENV['RAILS_ENV'] == 'production'
  stdout_redirect "#{log_dir}/puma.stdout.log", "#{log_dir}/puma.stderr.log", true
end

Causes problem
on_worker_boot do
  ActiveRecord::Base.establish_connection
end

Causes problem
preload_app!

此問題是由puma.rb配置文件引起的。 我正在取消注釋每行以查看它們是否可以工作,但是在puma.rb文件中似乎沒有任何代碼行只會導致Errno::EBADF: Bad file descriptor錯誤。

如果您使用capistrano,則需要評論preload_app! 嘗試使用分階段重新啟動而不是重新啟動

我已通過對puma.rb(配置文件)進行以下更改來解決此問題。 就我而言,我使用capistrano部署並重新啟動puma。 使用phased-restart命令有兩個要求:worker> = 2並且不使用preload

workers 2
#preload_app! 

我的重啟命令( phased-restart ):

pumactl -S /srv/apps/my_app/shared/tmp/pids/puma.state -F /srv/apps/my_app/shared/config/puma.rb phased-restart

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM