|
2 | 2 | # are invoked here are part of Puma's configuration DSL. For more information
|
3 | 3 | # about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html.
|
4 | 4 |
|
5 |
| -# Puma can serve each request in a thread from an internal thread pool. |
6 |
| -# The `threads` method setting takes two numbers: a minimum and maximum. |
7 |
| -# Any libraries that use thread pools should be configured to match |
8 |
| -# the maximum value specified for Puma. Default is set to 5 threads for minimum |
9 |
| -# and maximum; this matches the default thread size of Active Record. |
10 |
| -max_threads_count = ENV.fetch("RAILS_MAX_THREADS", 5) |
11 |
| -min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } |
12 |
| -threads min_threads_count, max_threads_count |
13 |
| - |
14 |
| -# Specifies that the worker count should equal the number of processors in production. |
15 |
| -if ENV["RAILS_ENV"] == "production" |
16 |
| - worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") { Concurrent.physical_processor_count }) |
17 |
| - workers worker_count if worker_count > 1 |
18 |
| -end |
19 |
| - |
20 |
| -# Specifies the `worker_timeout` threshold that Puma will use to wait before |
21 |
| -# terminating a worker in development environments. |
22 |
| -worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" |
| 5 | +# Puma starts a configurable number of processes (workers) and each process |
| 6 | +# serves each request in a thread from an internal thread pool. |
| 7 | +# |
| 8 | +# The ideal number of threads per worker depends both on how much time the |
| 9 | +# application spends waiting for IO operations and on how much you wish to |
| 10 | +# to prioritize throughput over latency. |
| 11 | +# |
| 12 | +# As a rule of thumb, increasing the number of threads will increase how much |
| 13 | +# traffic a given process can handle (throughput), but due to CRuby's |
| 14 | +# Global VM Lock (GVL) it has diminishing returns and will degrade the |
| 15 | +# response time (latency) of the application. |
| 16 | +# |
| 17 | +# The default is set to 3 threads as it's deemed a decent compromise between |
| 18 | +# throughput and latency for the average Rails application. |
| 19 | +# |
| 20 | +# Any libraries that use a connection pool or another resource pool should |
| 21 | +# be configured to provide at least as many connections as the number of |
| 22 | +# threads. This includes Active Record's `pool` parameter in `database.yml`. |
| 23 | +threads_count = ENV.fetch("RAILS_MAX_THREADS", 3) |
| 24 | +threads threads_count, threads_count |
23 | 25 |
|
24 | 26 | # Specifies the `port` that Puma will listen on to receive requests; default is 3000.
|
25 | 27 | port ENV.fetch("PORT", 3000)
|
26 | 28 |
|
27 |
| -# Specifies the `environment` that Puma will run in. |
28 |
| -environment ENV.fetch("RAILS_ENV") { "development" } |
29 |
| - |
30 |
| -# Specifies the `pidfile` that Puma will use. |
31 |
| -pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } |
32 |
| - |
33 | 29 | # Allow puma to be restarted by `bin/rails restart` command.
|
34 | 30 | plugin :tmp_restart
|
| 31 | + |
| 32 | +# Only use a pidfile when requested |
| 33 | +pidfile ENV["PIDFILE"] if ENV["PIDFILE"] |
0 commit comments