Il semble qu'il soit pris pour acquis que vous ne devez pas utiliser Webrick comme serveur de production, mais je ne trouve vraiment nulle part mentionnant pourquoi. Le consensus semble être: "Webrick convient au développement, mais Thin ou Unicorn est le choix pour la production, point final."
J'ai cherché la page d'accueil du serveur Thin et il parle de requêtes / seconde mais je ne comprends pas vraiment le graphique car il n'y a pas d'annotation.
Quelqu'un peut-il me dire pourquoi je devrais utiliser Thin ou Unicorn par rapport à Webrick? Y a-t-il également un avantage à utiliser Webrick pour le développement? J'utilise Webrick depuis qu'il est livré avec des rails, et je pense qu'il devrait y avoir une raison pour laquelle c'est par défaut.
J'utilise Heroku au fait.
Réponses:
Quelques raisons importantes
Lorsque je mentionne les redirections / réécritures, je fais référence au fait qu'en utilisant Webrick, vous devez gérer les réécritures sur une couche différente (Rack, Sinatra, Rails, code Webrick personnalisé, etc.). Cela vous oblige à faire tourner des «gestionnaires» Ruby supplémentaires pour exécuter votre code de réécriture. Pour un site à faible trafic, cela peut convenir car vous avez peut-être déjà des processus préchauffés qui ne font rien. Cependant, pour un site à trafic plus élevé, il s'agit d'une charge supplémentaire sur le serveur pour quelque chose que les serveurs frontaux (Apache, Nginx, etc.) peuvent gérer sans faire tourner Ruby *, et probablement des ordres de grandeur plus rapides.
* par exemple, si vous utilisez un équilibreur de charge, vous pouvez acheminer tout le trafic de réécriture vers un serveur sur lequel ruby n'est pas installé et laisser vos serveurs principaux gérer uniquement le trafic principal. Ce trafic de réécriture peut être dû à des modifications du site pour le référencement, ou à quelque chose de similaire. Un autre cas serait un site qui a plusieurs composants, et peut-être une section est Rails, une autre est PHP, et des réécritures sont nécessaires pour les deux (c'est-à-dire réécrire les anciens chemins PHP en Rails)
la source
WEBrick ne peut pas non plus gérer des URI plus longs, s'ils dépassent 2083 caractères, vous verrez un plantage. Thin n'a pas ces problèmes, ce qui le rend supérieur - déjà en développement.
la source
Je n'aime pas vraiment compliquer les choses simples et l'optimisation prématurée. WEBrick peut être utilisé en production à condition qu'il s'agisse plutôt d'un site Web à faible trafic. La plupart des applications le sont.
Si votre site fait quelque chose qui prend du temps, par exemple, envoie des e-mails ou génère des fichiers PDF, vous devez rendre WEBrick multi-thread . Vous souhaitez gérer plusieurs demandes à la fois.
la source
Il a eu des problèmes de sécurité dans le passé, mais il semble que la principale raison en soit qu'il est vraiment lent par rapport aux serveurs destinés à la production.
la source
La plus grande faiblesse de webrick lors de l'exécution en mode production est qu'il s'agit d'un serveur Web à un seul thread et à processus unique, ce qui signifie qu'il est capable de ne servir qu'une seule requête http à la fois.
la source