thoảng, mỗi khi tôi đẩy một phát hành để Heroku không lâu sau tôi sẽ nhận được lỗi sau (Tôi đang chạy dynos 2 512MB):Heroku - tại sao tôi gặp lỗi R12 (Thoát thời gian chờ) khi đẩy bản phát hành lên 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
Tôi đang sử dụng máy chủ ứng dụng kỳ lân, tiếc là chỉ có 1 cho mỗi kỳ lân công nhân mỗi 512MB dyno (kể từ lúc cao điểm của nó, ứng dụng RSS của tôi là 320MB - yea, đi con số, một số sưng lên đang xảy ra). Không chắc chắn nếu điều này giúp, nhưng tôi đang trên Cedar14 với Preboot kích hoạt. UNICORN_WORKERS
được đặt thành 1.
Đây là thiết lập lân của tôi. Tôi có nên lo ngại về lỗi này không?
Và trong khi chúng tôi đang trong chủ đề này, kích thước nhóm db 15 quá lớn đối với 2 dynos của tôi (tôi đang sử dụng chuẩn Postgres cho phép tối đa 120 kết nối đồng thời).
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
Lưu ý phụ về cấu hình ở trên. Thực sự 'DB_POOL' phải là 1 hoặc 2 trong thế giới kỳ lân (kết nối cho mỗi quy trình công nhân). Do đó tốt hơn để có 'ENV [' DB_POOL '] || 2'. – user1322092