Di tanto in tanto, ogni volta che spingo un rilascio di Heroku poco dopo avrei ricevuto il seguente errore (sto correndo 2 512 lanci):Heroku - perché dovrei ricevere l'errore R12 (timeout di uscita) quando si preme un rilascio su Heroku?
2014-11-21 00:38:30.216
188 <45>1 2014-11-21T00:38:29.163459+00:00 heroku web.2 - - Error R12 (Exit timeout) -> At least one process failed to exit within 10 seconds of SIGTERM
sto usando il server di applicazione unicorno, purtroppo solo l'1 per unicorno worker per 512MB di dyno (dato che al suo apice, il mio RSS di app è 320MB - sì, vai a capire, sta succedendo un po 'di fluttuante). Non sono sicuro se questo aiuta, ma sono su Cedar14 con Preboot abilitato. UNICORN_WORKERS
è impostato su 1.
Ecco la configurazione del mio unicorno. Dovrei preoccuparmi di questo errore?
E mentre siamo su questo argomento, la dimensione del pool db 15 è troppo grande per i miei 2 dynos (sto usando lo standard Postgres che consente fino a 120 connessioni simultanee).
worker_processes Integer(ENV['UNICORN_WORKERS'] || 2)
timeout Integer(ENV['UNICORN_TIMEOUT'] || 25)
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
if defined?(ActiveRecord::Base)
ActiveRecord::Base.connection.disconnect!
end
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
# other settings
if defined?(ActiveRecord::Base)
config = ActiveRecord::Base.configurations[Rails.env] || Rails.application.config.database_configuration[Rails.env]
config['reaping_frequency'] = Integer(ENV['DB_REAPING_FREQUENCY'] || 10)
config['pool'] = ENV['DB_POOL'] || 15
ActiveRecord::Base.establish_connection(config)
end
end
Una nota a margine sulla configurazione precedente. In realtà 'DB_POOL' dovrebbe essere 1 o 2 nel mondo unicorno (connessioni per processo di lavoro). Quindi meglio avere 'ENV ['DB_POOL'] || 2'. – user1322092