From eae6986079865102813df4fcea6307bff2770283 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Mon, 18 Mar 2019 11:39:52 +0100 Subject: [PATCH] Puma: change config to enable cluster mode in production --- config/puma.rb | 67 +++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/config/puma.rb b/config/puma.rb index 1e19380dc..79bb01cbb 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -15,42 +15,43 @@ port ENV.fetch("PORT") { 3000 } # environment ENV.fetch("RAILS_ENV") { "development" } -# Specifies the number of `workers` to boot in clustered mode. -# Workers are forked webserver processes. If using threads and workers together -# the concurrency of the application would be max `threads` * `workers`. -# Workers do not work on JRuby or Windows (both of which do not support -# processes). -# -# workers ENV.fetch("WEB_CONCURRENCY") { 2 } +if ENV.fetch("RAILS_ENV") == "production" + # Specifies the number of `workers` to boot in clustered mode. + # Workers are forked webserver processes. If using threads and workers together + # the concurrency of the application would be max `threads` * `workers`. + # Workers do not work on JRuby or Windows (both of which do not support + # processes). + # + workers ENV.fetch("WEB_CONCURRENCY") { 2 } -# Use the `preload_app!` method when specifying a `workers` number. -# This directive tells Puma to first boot the application and load code -# before forking the application. This takes advantage of Copy On Write -# process behavior so workers use less memory. If you use this option -# you need to make sure to reconnect any threads in the `on_worker_boot` -# block. -# -# preload_app! + # Use the `preload_app!` method when specifying a `workers` number. + # This directive tells Puma to first boot the application and load code + # before forking the application. This takes advantage of Copy On Write + # process behavior so workers use less memory. If you use this option + # you need to make sure to reconnect any threads in the `on_worker_boot` + # block. + # + preload_app! -# If you are preloading your application and using Active Record, it's -# recommended that you close any connections to the database before workers -# are forked to prevent connection leakage. -# -# before_fork do -# ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord) -# end + # If you are preloading your application and using Active Record, it's + # recommended that you close any connections to the database before workers + # are forked to prevent connection leakage. + # + before_fork do + ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord) + end -# The code in the `on_worker_boot` will be called if you are using -# clustered mode by specifying a number of `workers`. After each worker -# process is booted, this block will be run. If you are using the `preload_app!` -# option, you will want to use this block to reconnect to any threads -# or connections that may have been created at application boot, as Ruby -# cannot share connections between processes. -# -# on_worker_boot do -# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) -# end -# + # The code in the `on_worker_boot` will be called if you are using + # clustered mode by specifying a number of `workers`. After each worker + # process is booted, this block will be run. If you are using the `preload_app!` + # option, you will want to use this block to reconnect to any threads + # or connections that may have been created at application boot, as Ruby + # cannot share connections between processes. + # + on_worker_boot do + ActiveRecord::Base.establish_connection if defined?(ActiveRecord) + end +end # Allow puma to be restarted by `rails restart` command. plugin :tmp_restart