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 elthreaded: 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 .
Trinidad es agradable Un servidor muy potente para el desarrollo de jRuby:
http://blog.jruby.org/2012/04/two-apps-one-trinidad/
http://railscasts.com/episodes/377-trinidad?view=comments
Aquí hay algunos buenos puntos de referencia (el servidor Trini vence al puma):
http://carlhoerberg.github.io/blog/2012/03/31/jruby-application-server-benchmarks/
Un buen tutorial de configuración de Trinidad Server: