Otrzymuję R12 Exit Timeout błędy dla aplikacji Heroku z jednorożcem i sidekiq. Te błędy występują 1-2 razy dziennie i kiedy tylko się rozmieszczę. Rozumiem, że muszę konwertować sygnały z zamykaniem z Heroku na jednorożca, aby poprawnie odpowiedzieć, ale myślałem, że zrobiłem tak w poniżej jednorożca config:Limit czasu wyjścia Unicorn na Heroku po zatrzymaniu TERM i wysłaniu 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
Moje dzienniki otaczających wygląd błędzie takiego:
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
Wygląda na to, że wszystkie procesy podrzędne zostały pomyślnie zebrane przed upływem limitu czasu. Czy to możliwe, że mistrz wciąż żyje? Ponadto, czy router nadal wysyła żądania sieciowe do dyno podczas zamykania, jak pokazano w dziennikach?
FWIW, Używam wtyczki zerowego wyłączenia Heroku (https://devcenter.heroku.com/articles/labs-preboot/).
Jeśli to pomaga, to również mam ten problem _ bez użycia wtyczki "zero czasów". Mam nadzieję, że ktoś może ci pomóc, lub możesz napisać odpowiedź, jeśli to zrozumiesz. Być może skontaktuj się z pomocą Heroku? –
Podobnie jak Chris, nie używam zerowego czasu przestoju i doświadczam tego problemu. Jest to pomimo użycia poleconego przez Heroku konfiguratora jednorożca. – imderek
Mam ten sam problem, pomimo używania zalecanej przez Heroku konfiguracji. Bez żadnych przestojów. – elsurudo