I've set up ActionCable in a staging environment and things look fine so far. Following the instructions here I set the passenger_force_max_concurrent_requests_per_process to 0 to address this problem:
Passenger's highly optimized load balancer assumes that Ruby apps can handle 1 (or thread-limited amount of) concurrent connection(s). This is usually the case and results in optimal load-balancing. But endpoints that deal with SSE/Websockets can handle many more concurrent connections, so the assumption leads to degraded performance.
My question is how can I now compute the maximum amount of connections my app can handle. Passenger suggests that:
A value of 0 means that each process can handle an unlimited number of connections.
Obviously there is an upper bound here, I'm just not sure how I can find it other than empirical testing.