¿Cuál es el mejor servidor de aplicaciones para Ruby?

Me gusta mucho Unicornio.

Es un poco más complicado que Passenger; no hay un tutorial de instalación de 15 minutos y hay muchas partes móviles, pero si tienes el tiempo y el interés aquí, son los beneficios que veo sobre Passenger.

Transparencia
El pasajero hace girar los hilos de los trabajadores y los administra por usted, pero es un poco opaco de monitorear y un poco “inteligente”. Hay herramientas que pueden ayudarlo, pero necesita herramientas especiales para “pasajeros”. Si desea monitorearlo con dios, monit o bluepill, realmente no funciona. Los fanáticos de los pasajeros dicen que no es necesario, que se monitorea solo, pero quiero saber todo lo que se está ejecutando en mis máquinas, así que cuando algo falla o no sé dónde buscar una solución.

Despliegues de tiempo de inactividad cero
Esta es la verdadera nuez. Unicorn juega bien con el kernel y los procesos secundarios. Cuando se implementa en Unicorn, puede configurarlo para implementar un nuevo hilo maestro, calentarlo y estar listo para servir el tráfico antes de que mate al viejo maestro. Esto le permite tener siempre una instancia de aplicación en ejecución y nunca tener tiempo de inactividad para su implementación. Con el pasajero, siempre veo solicitudes largas durante unos 5 segundos después de un despliegue. Esto no es terrible, pero 0 es mejor que 5.

Está probado
Los chicos de GitHub usan Unicorn. Los chicos de Twitter usan Unicornio. Si necesita más pruebas de que funciona en un entorno de servidor de alto volumen y alto estrés, está pidiendo demasiado.

Para obtener más información, visite http://unicorn.bogomips.org/ http://engineering.twitter.com/2… o https://github.com/blog/517-unicorn

Incluso si no decides usar Unicorn, te sugiero que entiendas cómo funciona. Es realmente inteligente, y aprendí un montón sobre señales y procesos y cómo funciona un sistema Unix simplemente estudiando la documentación de Unicorn.

Cojo, respuesta calificada:
Depende del problema que estés tratando de resolver. El malvado del pasajero ayuna para establecer; Parece que se considera que el unicornio tiene un mejor rendimiento sostenido bajo cargas consistentemente altas.

También debe considerar en qué etapa se encuentra su proyecto, cuánto se beneficiará al invertir en esta opción ahora versus más adelante, los costos probables de cambiar cuando descubra que la elección que hizo tiene una deficiencia imprevisible que paraliza el rendimiento de sus aplicaciones, bla bla bla bla bla.

Dicho esto, aquí hay un conjunto reciente de datos de evaluación comparativa que sugiere que Passenger gana en general, aunque Unicorn es un poco más eficiente en el uso de CPU: http://torquebox.org/news/2011/0

Prefiero unicornio. Porque puedo configurarlo. El pasajero también es una buena opción, pero normalmente voy con Unicorn.

Si va a enviar su aplicación al servidor en dispositivos móviles, Unicorn sabrá fallar por cualquier cosa que no sean conexiones rápidas. 3G y EDGE fallarán. ¡Hay una buena solución que estoy implementando para que un cliente use Rainbows !. Construido de Unicornio y bueno para clientes lentos. La configuración de Unicorn y Rainbows se puede combinar en un solo archivo de configuración.

Use (como es típico) Nginx como servidor web y proxy para los servidores de aplicaciones. Por lo tanto, es imprescindible configurar Nginx para enviar tráfico a Rainbows o Unicorn en función de un dominio o directorio. Pero eso también es fácil de hacer.