When Ruby/EventMachine failed to scale to the number of simultaneous connections we needed, we took a look at Elixir and the Erlang runtime and found it to be much easier to meet our performance requirements. Lean what an acceptor pool is and why you don't have to build your own, and what Erlang/OTP restart strategies mean to the runtime behavior of your system.