mirror of https://github.com/rails/rails
parent
3c557cb333
commit
c420bedda7
|
@ -2,7 +2,7 @@ require 'action_dispatch'
|
|||
|
||||
module ActionCable
|
||||
module Connection
|
||||
# For every WebSocket the Action Cable server accepts, a Connection object will be instantiated. This instance becomes the parent
|
||||
# For every WebSocket connection the Action Cable server accepts, a Connection object will be instantiated. This instance becomes the parent
|
||||
# of all of the channel subscriptions that are created from there on. Incoming messages are then routed to these channel subscriptions
|
||||
# based on an identifier sent by the Action Cable consumer. The Connection itself does not deal with any specific application logic beyond
|
||||
# authentication and authorization.
|
||||
|
|
|
@ -54,15 +54,15 @@ module ActionCable
|
|||
|
||||
# The worker pool is where we run connection callbacks and channel actions. We do as little as possible on the server's main thread.
|
||||
# The worker pool is an executor service that's backed by a pool of threads working from a task queue. The thread pool size maxes out
|
||||
# at 4 worker threads by default. Tune the size yourself with config.action_cable.worker_pool_size.
|
||||
# at 4 worker threads by default. Tune the size yourself with `config.action_cable.worker_pool_size`.
|
||||
#
|
||||
# Using Active Record, Redis, etc within your channel actions means you'll get a separate connection from each thread in the worker pool.
|
||||
# Plan your deployment accordingly: 5 servers each running 5 Puma workers each running an 8-thread worker pool means at least 200 database
|
||||
# connections.
|
||||
#
|
||||
# Also, ensure that your database connection pool size is as least as large as your worker pool size. Otherwise, workers may oversubscribe
|
||||
# the db connection pool and block while they wait for other workers to release their connections. Use a smaller worker pool or a larger
|
||||
# db connection pool instead.
|
||||
# the database connection pool and block while they wait for other workers to release their connections. Use a smaller worker pool or a larger
|
||||
# database connection pool instead.
|
||||
def worker_pool
|
||||
@worker_pool || @mutex.synchronize { @worker_pool ||= ActionCable::Server::Worker.new(max_size: config.worker_pool_size) }
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue