|
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 |
| 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 |
13 | 25 |
|
14 | | -# Specifies that the worker count should equal the number of processors in production. |
15 | | -if ENV["RAILS_ENV"] == "production" |
16 | | - require "concurrent-ruby" |
17 | | - worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") { Concurrent.physical_processor_count }) |
18 | | - workers worker_count if worker_count > 1 |
19 | | -end |
20 | | - |
21 | | -# Specifies the `worker_timeout` threshold that Puma will use to wait before |
22 | | -# terminating a worker in development environments. |
23 | | -worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" |
24 | | - |
25 | | -# Specifies the `port` that Puma will listen on to receive requests; default is 3100. |
26 | | -port ENV.fetch("PORT") { 3100 } |
27 | | - |
28 | | -# Specifies the `environment` that Puma will run in. |
29 | | -environment ENV.fetch("RAILS_ENV") { "development" } |
30 | | - |
31 | | -# Specifies the `pidfile` that Puma will use. |
32 | | -pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } |
| 26 | +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. |
| 27 | +port ENV.fetch("PORT", 3100) |
33 | 28 |
|
34 | 29 | # Allow puma to be restarted by `bin/rails restart` command. |
35 | 30 | plugin :tmp_restart |
| 31 | + |
| 32 | +# Specify the PID file. Defaults to tmp/pids/server.pid in development. |
| 33 | +# In other environments, only set the PID file if requested. |
| 34 | +pidfile ENV["PIDFILE"] if ENV["PIDFILE"] |
0 commit comments