Периодические тайм-ауты h12 на Heroku - PullRequest
0 голосов
/ 29 марта 2019

Мы периодически получаем ошибки тайм-аута на Heroku. Когда мы просматриваем наши журналы, чтобы найти некоторые подсказки о том, что может быть причиной этого, мы не смогли найти вескую причину для этого. Эти тайм-ауты обычно происходят не в самые загруженные времена, а в случайные времена.

Мы используем puma в качестве веб-сервера и sidekiq в качестве фонового процессора.

Наши конфигурации для пумы есть; MAX_THREADS=60, WEB_CONCURRENCY=1.

Наша конфигурация для sidekiq: WORKER_CONCURRENCY=8.

Мы используем single Standard-2x dynos для рабочих и веб.

Мы используем standard-0 пакет posgresql с 120 пределом подключения. У нас есть DB_POOL=60 конфигурация для сопоставления того же номера с количеством потоков. С этими конфигурациями мы не используем все соединения.

puma.rb

thread_count = ENV.fetch("MAX_THREADS") { 5 }.to_i
threads thread_count, thread_count

port        ENV.fetch("PORT") { 3000 }

environment ENV.fetch("RACK_ENV") { "development" }
workers ENV.fetch("WEB_CONCURRENCY") { 1 }
preload_app!

before_fork do
  ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord)
end

on_worker_boot do
  ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end

plugin :tmp_restart

Heroku Metrics

Как вы можете видеть из наших показателей, это происходит в некоторые случайные моменты времени, а не в самые загруженные моменты, когда мы получаем больше запросов.

Какие могут быть некоторые потенциальные причины для нас, чтобы получить эти тайм-ауты? Спасибо за вашу помощь.

...