Ricevo errori Timeout di uscita R12 per un'app di Heroku con unicorno e sidekiq. Questi errori si verificano 1-2 volte al giorno e ogni volta che utilizzo. Capisco che ho bisogno di convertire i segnali di disinserzione da Heroku per unicorno di rispondere correttamente, ma ho pensato che avevo fatto in seguito config unicorno:Timeout di uscita Unicorn su Heroku dopo aver bloccato TERM e invio QUIT
worker_processes 3
timeout 30
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts "Unicorn master intercepting TERM and sending myself QUIT instead. My PID is #{Process.pid}"
Process.kill 'QUIT', Process.pid
end
if defined?(ActiveRecord::Base)
ActiveRecord::Base.connection.disconnect!
Rails.logger.info('Disconnected from ActiveRecord')
end
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts "Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is #{Process.pid}"
end
if defined?(ActiveRecord::Base)
ActiveRecord::Base.establish_connection
Rails.logger.info('Connected to ActiveRecord')
end
Sidekiq.configure_client do |config|
config.redis = { :size => 1 }
end
end
miei ceppi che circondano l'aspetto errore come questo:
Stopping all processes with SIGTERM
Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is 7
Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is 11
Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT. My PID is 15
Unicorn master intercepting TERM and sending myself QUIT instead. My PID is 2
Started GET "/manage"
reaped #<Process::Status: pid 11 exit 0> worker=1
reaped #<Process::Status: pid 7 exit 0> worker=0
reaped #<Process::Status: pid 15 exit 0> worker=2
master complete
Error R12 (Exit timeout) -> At least one process failed to exit within 10 seconds of SIGTERM
Stopping remaining processes with SIGKILL
Process exited with status 137
Sembra che tutti i processi figlio siano stati estratti con successo prima del timeout. È possibile che il maestro sia ancora vivo? Inoltre, se il router continua a inviare richieste Web al banco durante lo spegnimento, come mostrato nei registri?
FWIW, sto usando il plug-in di downtime zero di Heroku (https://devcenter.heroku.com/articles/labs-preboot/).
Se aiuta, sto anche riscontrando questo problema _ senza il plug-in di zero downtime. Spero che qualcuno possa aiutarti o puoi pubblicare una risposta se la capisci. Forse contattare il supporto di Heroku? –
Proprio come Chris, non sto usando zero tempi di inattività e sto riscontrando questo problema. Questo nonostante l'uso della configurazione unicorno raccomandata da Heroku. – imderek
Ho lo stesso problema, nonostante utilizzo la configurazione raccomandata da Heroku. Nessuna distribuzione zero downtime. – elsurudo