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.
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
5- # and maximum; this matches the default thread size of Active Record.
6- #
1+ # config/puma.rb
72
8- max_threads_count = ENV . fetch ( "RAILS_MAX_THREADS" ) { 5 }
9- min_threads_count = ENV . fetch ( "RAILS_MIN_THREADS" ) { max_threads_count }
3+ max_threads_count = ENV . fetch ( "RAILS_MAX_THREADS" ) { 5 } . to_i
4+ min_threads_count = ENV . fetch ( "RAILS_MIN_THREADS" ) { max_threads_count } . to_i
105threads min_threads_count , max_threads_count
116
12- workers ENV . fetch ( "WEB_CONCURRENCY" ) { 2 }
7+ # Remove or comment out this line entirely
8+ # workers ENV.fetch("WEB_CONCURRENCY") { 2 }
9+
10+ # Keep preload_app! if you’re using any job runners
1311preload_app!
1412
1513port ENV . fetch ( "PORT" ) { 3000 }
16- environment ENV . fetch ( "RAILS_ENV" , "production" )
17-
14+ environment ENV . fetch ( "RAILS_ENV" ) { "production" }
1815
1916plugin :tmp_restart
2017
2421
2522on_worker_boot do
2623 ActiveRecord ::Base . establish_connection if defined? ( ActiveRecord )
27- end
28-
29- # Specifies the number of `workers` to boot in clustered mode.
30- # Workers are forked webserver processes. If using threads and workers together
31- # the concurrency of the application would be max `threads` * `workers`.
32- # Workers do not work on JRuby or Windows (both of which do not support
33- # processes).
34- #
35- # workers ENV.fetch("WEB_CONCURRENCY") { 2 }
36-
37- # Use the `preload_app!` method when specifying a `workers` number.
38- # This directive tells Puma to first boot the application and load code
39- # before forking the application. This takes advantage of Copy On Write
40- # process behavior so workers use less memory. If you use this option
41- # you need to make sure to reconnect any threads in the `on_worker_boot`
42- # block.
43- #
44- # preload_app!
45-
46- # If you are preloading your application and using Active Record, it's
47- # recommended that you close any connections to the database before workers
48- # are forked to prevent connection leakage.
49- #
50- # before_fork do
51- # ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord)
52- # end
53-
54- # The code in the `on_worker_boot` will be called if you are using
55- # clustered mode by specifying a number of `workers`. After each worker
56- # process is booted, this block will be run. If you are using the `preload_app!`
57- # option, you will want to use this block to reconnect to any threads
58- # or connections that may have been created at application boot, as Ruby
59- # cannot share connections between processes.
60- #
61- # on_worker_boot do
62- # ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
63- # end
64- #
65-
66- # Allow puma to be restarted by `rails restart` command.
67- # plugin :tmp_restart
24+ end
0 commit comments