| 1 | # Puma can serve each request in a thread from an internal thread pool. | = | 1 | # Puma can serve each request in a thread from an internal thread pool. |
| 2 | # The `threads` method setting takes two numbers: a minimum and maximum. | 2 | # The `threads` method setting takes two numbers: a minimum and maximum. | |
| 3 | # Any libraries that use thread pools should be configured to match | 3 | # Any libraries that use thread pools should be configured to match | |
| 4 | # the maximum value specified for Puma. Default is set to 5 threads for minimum | 4 | # the maximum value specified for Puma. Default is set to 5 threads for minimum | |
| 5 | # and maximum; this matches the default thread size of Active Record. | 5 | # and maximum; this matches the default thread size of Active Record. | |
| 6 | # | 6 | # | |
| 7 | max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } | 7 | max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } | |
| 8 | min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } | 8 | min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } | |
| 9 | threads min_threads_count, max_threads_count | 9 | threads min_threads_count, max_threads_count | |
| 10 | 10 | |||
| -+ | 11 | # Specifies the `worker_timeout` threshold that Puma will use to wait before | ||
| 12 | # terminating a worker in development environments. | |||
| 13 | # | |||
| 14 | worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" | |||
| 15 | ||||
| 11 | # Specifies the `port` that Puma will listen on to receive requests; default is 3000. | = | 16 | # Specifies the `port` that Puma will listen on to receive requests; default is 3000. |
| 12 | # | 17 | # | |
| 13 | port ENV.fetch("PORT") { 3000 } | <> | 18 | port ENV.fetch("PORT") { 3000 } |
| 14 | = | 19 | ||
| 15 | # Specifies the `environment` that Puma will run in. | 20 | # Specifies the `environment` that Puma will run in. | |
| 16 | # | 21 | # | |
| 17 | environment ENV.fetch("RAILS_ENV") { "development" } | 22 | environment ENV.fetch("RAILS_ENV") { "development" } | |
| 18 | 23 | |||
| 19 | # Specifies the `pidfile` that Puma will use. | 24 | # Specifies the `pidfile` that Puma will use. | |
| 20 | pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } | 25 | pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } | |
| 21 | 26 | |||
| 22 | # Specifies the number of `workers` to boot in clustered mode. | 27 | # Specifies the number of `workers` to boot in clustered mode. | |
| 23 | # Workers are forked web server processes. If using threads and workers together | 28 | # Workers are forked web server processes. If using threads and workers together | |
| 24 | # the concurrency of the application would be max `threads` * `workers`. | 29 | # the concurrency of the application would be max `threads` * `workers`. | |
| 25 | # Workers do not work on JRuby or Windows (both of which do not support | 30 | # Workers do not work on JRuby or Windows (both of which do not support | |
| 26 | # processes). | 31 | # processes). | |
| 27 | # | 32 | # | |
| 28 | # workers ENV.fetch("WEB_CONCURRENCY") { 2 } | 33 | # workers ENV.fetch("WEB_CONCURRENCY") { 2 } | |
| 29 | 34 | |||
| 30 | # Use the `preload_app!` method when specifying a `workers` number. | 35 | # Use the `preload_app!` method when specifying a `workers` number. | |
| 31 | # This directive tells Puma to first boot the application and load code | 36 | # This directive tells Puma to first boot the application and load code | |
| 32 | # before forking the application. This takes advantage of Copy On Write | 37 | # before forking the application. This takes advantage of Copy On Write | |
| 33 | # process behavior so workers use less memory. | 38 | # process behavior so workers use less memory. | |
| 34 | # | 39 | # | |
| 35 | # preload_app! | 40 | # preload_app! | |
| 36 | 41 | |||
| 37 | # Allow puma to be restarted by `rails restart` command. | 42 | # Allow puma to be restarted by `rails restart` command. | |
| 38 | plugin :tmp_restart | 43 | plugin :tmp_restart |