tutorial rails ruby-on-rails multithreading ruby-on-rails-4 thin puma

ruby-on-rails - tutorial - rails puma



¿Es puma el ÚNICO servidor http de rieles de múltiples hilos 4? (2)

He conseguido que nuestra pila se convierta en Rails 4 (sí!)

y estoy buscando aprovechar el código seguro para subprocesos.

Puma trabaja para levantarse, pararlo parece ser un problema diferente :(

¿Es Puma el único riel multihilo?

Thin -> EventMachine Unicorn -> Forking Puma -> multi-threaded Mongrel -> don''t care Webbrick -> don''t care


No. En orden alfabético:

  • Iodine a HTTP / Websocket Server y EventMachine Alternative (basado en kqueue / epoll)
  • Net::HTTP::Server , a pesar de la falta de publicidad, admite multiprocesamiento
  • Phusion Passenger ha soportado multithreading desde v4 beta
  • Rainbows! soporta múltiples modelos de concurrencia, incluyendo multihilo
  • Reel es un servidor "evented" con respaldo de Celluloid , que "también funciona muy bien para aplicaciones de multiproceso y también proporciona compatibilidad tradicional de bloqueo de E / S de multiproceso"
  • Thin tiene un modo de subproceso, que se puede habilitar pasando --threaded o estableciendo el threaded: true en el archivo de configuración apropiado (por ejemplo, bundle exec thin start --threaded )
  • WEBrick está en su propio multiproceso, por lo que no es justo eliminarlo como una opción; Si está usando la versión integrada de Rails, necesitará un parche de Rails::Server para habilitar múltiples subprocesos.
  • Zbatery está basado en Rainbows! y soporta todos los modelos de concurrencia que Rainbows! apoya

Tenga en cuenta que actualmente MRI Ruby ejecuta solo un hilo que se ejecuta a la vez debido a su bloqueo de intérprete global (GIL) . Solo serás capaz de explotar multihilos utilizando un tiempo de ejecución Ruby diferente, como JRuby o Rubinius , que proporciona acceso a subprocesos nativos. Si decides ir con JRuby, hay varios servidores dependientes de JVM que vale la pena explorar .