Parece que se da por sentado que no debe usar Webrick como servidor de producción, pero realmente no puedo encontrar en ningún lugar que mencione por qué. El consenso parece ser: "Webrick está bien para el desarrollo, pero Thin o Unicorn es la opción para la producción, punto".
Busqué la página de inicio del servidor Thin y habla de solicitudes / segundo, pero realmente no entiendo el gráfico ya que no hay anotaciones.
¿Alguien puede decirme por qué debería usar Thin o Unicorn en comparación con Webrick? ¿También hay algún beneficio al usar Webrick para el desarrollo? He estado usando Webrick desde que viene con rieles, y creo que debería haber una razón por la que es predeterminado.
Por cierto, estoy usando Heroku.
Respuestas:
Un par de razones importantes
Cuando menciono redirecciones / reescrituras, me refiero al hecho de que al usar Webrick, debes manejar las reescrituras en una capa diferente (Rack, Sinatra, Rails, código personalizado de Webrick, etc.). Esto requiere que active "manejadores" ruby adicionales para realizar su reescritura de código. Para un sitio con poco tráfico, esto puede estar bien, ya que es posible que ya tenga procesos precalentados que no hagan nada. Sin embargo, para un sitio de mayor tráfico, esto es una carga adicional en el servidor para algo que los servidores front-end (Apache, Nginx, etc.) pueden manejar sin hacer girar Ruby *, y probablemente órdenes de magnitud más rápido.
* por ejemplo, si se está ejecutando detrás de un equilibrador de carga, puede enrutar todo el tráfico de reescritura a un servidor que no tenga Ruby instalado y dejar que sus servidores principales solo administren el tráfico principal. Este tráfico de reescritura puede deberse a cambios en el sitio para SEO o algo similar. Otro caso sería un sitio que tiene varios componentes, y tal vez una sección es Rails, otra es PHP, y se necesitan reescrituras para ambos (es decir, reescribir las antiguas rutas de PHP a Rails)
fuente
WEBrick tampoco puede manejar URI más largos, si superan los 2083 caracteres, verá un bloqueo. Thin no tiene estos problemas, lo que lo hizo superior, ya en desarrollo.
fuente
Realmente no me gusta complicar las cosas simples y la optimización prematura. WEBrick se puede utilizar en producción siempre que sea un sitio web de poco tráfico. La mayoría de las aplicaciones son.
Si su sitio hace algo que lleva tiempo, por ejemplo, envía correos electrónicos o genera archivos PDF, debe hacer que WEBrick sea multiproceso . Quieres manejar varias solicitudes a la vez.
fuente
Ha tenido algunos problemas de seguridad en el pasado, pero parece que la gran razón es que es muy lento en comparación con los servidores que están destinados a la producción.
fuente
La mayor debilidad de webrick cuando se ejecuta en modo de producción es que es un servidor web de proceso único y de un solo proceso, lo que significa que es capaz de atender solo una solicitud http a la vez.
fuente