Webrick作为生产服务器与薄型还是独angular兽?

这似乎是理所当然的,你不能使用Webrick作为生产服务器,但我真的找不到任何提及为什么。 共识似乎是:“Webrick可以发展,但是Thin或Unicorn是生产的select,期间。”

我查了一下Thin服务器的主页,它提到了每秒的请求数,但是我没有真正理解这个图,因为没有注释。

谁能让我知道为什么我应该使用薄或独angular兽相比Webrick? 使用Webrick进行开发也有什么好处吗? 我一直使用Webrick,因为它带有rails,我认为应该有一个默认的原因。

顺便说一句,我正在使用Heroku。

一些重要的原因

  1. 它是用Ruby编写的(请参阅http://github.com/ruby/ruby/tree/trunk/lib/webrick
  2. 编辑它没有生产网站通常需要的许多function,如多个工人(特别是预分叉,生命周期pipe理,asynchronous处理等),redirect,重写等

当我提到redirect/重写时,我指的是使用Webrick,您必须在不同的层(Rack,Sinatra,Rails,Webrick自定义代码等)处理重写。 这需要你启动额外的ruby“handlers”来执行你的重写代码。 对于一个低stream量的网站,这可能是好的,因为你可能已经预热的过程什么也不做。 然而,对于一个更高stream量的站点来说,这对于前端服务器(Apache,Nginx等)能够处理的事情来说,是服务器上的额外负载,而不需要启动Ruby *,而且可能要快几个数量级。

* 例如,如果运行在负载均衡器后面,则可以将所有重写stream量路由到未安装ruby的服务器,并让主服务器仅pipe理主stream量。 这个重写stream量可能是由于SEO的网站更改,或类似的东西。 另一种情况是一个网站有多个组件,也许一个部分是Rails,另一个是PHP,重写需要两个(即重写旧的PHPpath到Rails)

WEBrick也不能处理更长的URI,如果他们超过2083字符,你会看到一个崩溃。 薄没有这些问题,这使得它的优越性 – 已经在发展。

我真的不喜欢把简单的事情和过早的优化复杂化。 WEBrick可以用于生产,只要它是一个低stream量的网站。 大部分的应用程序是。

如果您的网站需要花费一些时间,例如发送电子邮件或生成PDF文件,则应该使WEBrick成为multithreading 。 你想一次处理多个请求。

过去有一些安全问题,但最主要的原因是与生产服务器相比,速度确实很慢。

在生产模式下运行webrick最大的弱点是它是单线程的,单进程的Web服务器,这意味着它一次只能提供一个单一的http请求。