Parece que é um dado adquirido que você não deve usar o Webrick como servidor de produção, mas não consigo encontrar nenhum lugar mencionando o porquê. O consenso parece ser: "Webrick está bem para desenvolvimento, mas Thin ou Unicorn é a escolha para produção, ponto final."
Eu pesquisei a página inicial do Thin server e ela fala sobre solicitações / segundo, mas eu realmente não entendo o gráfico, pois não há anotações.
Alguém pode me dizer por que devo usar Thin ou Unicorn em comparação com Webrick? Também há algum benefício em usar o Webrick para desenvolvimento? Tenho usado o Webrick desde que vem com rails, e acho que deve haver uma razão para ele ser padrão.
A propósito, estou usando o Heroku.
Respostas:
Algumas razões importantes
Quando menciono redirecionamentos / reescritas, estou me referindo ao fato de que usando o Webrick, você tem que lidar com reescritas em uma camada diferente (Rack, Sinatra, Rails, código Webrick personalizado, etc). Isso requer que você gire "manipuladores" extras de ruby para executar seu código de reescrita. Para um site de baixo tráfego, isso pode ser bom, pois você pode ter processos pré-aquecidos sem fazer nada. No entanto, para um site de tráfego mais alto, isso é uma carga extra no servidor para algo que os servidores front-end (Apache, Nginx, etc) podem lidar sem girar Ruby *, e provavelmente ordens de magnitude mais rápido.
* por exemplo, se você estiver executando atrás de um balanceador de carga, poderá rotear todo o tráfego de reescrita para um servidor que não tenha o Ruby instalado e permitir que seus servidores principais gerenciem apenas o tráfego primário. Esse tráfego de reescrita pode ser devido a alterações do site para SEO ou algo semelhante. Outro caso seria um site que tem vários componentes, e talvez uma seção seja Rails, outra é PHP, e reescrita é necessária para ambos (ou seja, reescrever caminhos antigos de PHP para Rails)
fonte
WEBrick também não pode lidar com URIs mais longos, se eles excederem 2083 caracteres, você verá uma falha. Thin não tem esses problemas, o que o torna superior - já em desenvolvimento.
fonte
Eu realmente não gosto de complicar coisas simples e otimização prematura. WEBrick pode ser usado na produção, desde que seja um site de baixo tráfego. A maioria dos aplicativos é.
Se o seu site faz algo que leva tempo, por exemplo, enviar e-mails ou gerar arquivos PDF, você deve tornar o WEBrick multi-threaded . Você deseja lidar com várias solicitações ao mesmo tempo.
fonte
Ele teve alguns problemas de segurança no passado, mas parece que o grande motivo é que ele é muito lento em comparação com os servidores destinados à produção.
fonte
A maior fraqueza do webrick quando executado em modo de produção é que ele é um servidor da web de processo único e thread único, o que significa que é capaz de atender a apenas uma solicitação http de cada vez.
fonte