diff --git a/config.ru b/config.ru index c4279ada..22698645 100644 --- a/config.ru +++ b/config.ru @@ -1,7 +1,24 @@ # This file is used by Rack-based servers to start the application. +if defined?(Unicorn) + require 'unicorn/worker_killer' + + auto_restart_verbose = + ENV['UNICORN_AUTO_RESTART_VERBOSE'].to_s.downcase == 'true' + + max_requests = { + min: ENV['UNICORN_MAX_REQUESTS_MIN']&.to_i || 1024, + max: ENV['UNICORN_MAX_REQUESTS_MAX']&.to_i || 2048 + }.freeze + use Unicorn::WorkerKiller::MaxRequests, max_requests[:min], max_requests[:max], auto_restart_verbose + + oom = { + min: ((ENV['UNICORN_OOM_MIN']&.to_i || 192) * (1024 ** 2)), + max: ((ENV['UNICORN_OOM_MAX']&.to_i || 256) * (1024 ** 2)), + check_cycle: ENV['UNICORN_OOM_CHECK_CYCLE']&.to_i || 16 + }.freeze + use Unicorn::WorkerKiller::Oom, oom[:min], oom[:max], oom[:check_cycle], auto_restart_verbose +end + require ::File.expand_path('../config/environment', __FILE__) run Rails.application - -use Unicorn::WorkerKiller::MaxRequests, 1024, 2048, true -use Unicorn::WorkerKiller::Oom, (192*(1024**2)), (256*(1024**2)) diff --git a/doc/log-archiver.default b/doc/log-archiver.default index 453ab0eb..e1137eaf 100644 --- a/doc/log-archiver.default +++ b/doc/log-archiver.default @@ -11,3 +11,26 @@ LOG_ARCHIVER_DATABASE_PASSWORD= # 以下のコマンドを実行することで生成できます。 # bundle exec bin/rails secret SECRET_KEY_BASE= + +# UNICORN_AUTO_RESTART_VERBOSE +# 以下の設定による自動再起動までのログを詳細に出力するかの設定 +# true にすると、詳細出力します。 +#UNICORN_AUTO_RESTART_VERBOSE=false + +# UNICORN_MAX_REQUESTS_MIN +# UNICORN_MAX_REQUESTS_MAX +# Unicorn プロセスを、リクエスト数により自動的に再起動する設定 +# ランダムにプロセスを再起動する最小・最大回数を設定します。 +#UNICORN_MAX_REQUESTS_MIN=1024 +#UNICORN_MAX_REQUESTS_MAX=2048 + +# UNICORN_OOM_MIN +# UNICORN_OOM_MAX +# Unicorn プロセスを、メモリ使用量によって自動的に再起動する設定 +# メモリを何メガバイト使用したときに再起動するかを設定します。 +#UNICORN_OOM_MIN=192 +#UNICORN_OOM_MAX=256 + +# UNICORN_OOM_CHECK_CYCLE +# Oom の閾値に達しているかを何回のアクセスごとに調べるかを設定します。 +#UNICORN_OOM_CHECK_CYCLE=16