119

似乎认为您不能将 Webrick 用作生产服务器是理所当然的,但我真的找不到任何地方提到原因。共识似乎是:“Webrick 适合开发,但 Thin 或 Unicorn 是生产的选择,时期。”

我确实查看了瘦服务器的主页,它谈到了请求/秒,但我不太了解图表,因为没有注释。

谁能告诉我为什么我应该使用 Thin 或 Unicorn 与 Webrick 相比?使用 Webrick 进行开发还有什么好处吗?我一直在使用 Webrick,因为它带有 Rails,我认为应该有它默认的原因。

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

4

5 回答 5

42

几个重要的原因

  1. 它是用 Ruby 编写的(参见http://github.com/ruby/ruby/tree/trunk/lib/webrick
  2. 编辑它没有生产网站通常需要的许多功能,例如多个工作人员(特别是预分叉、生命周期管理、异步处理等)、重定向、重写等

当我提到重定向/重写时,我指的是使用 Webrick,您必须在不同的层(Rack、Sinatra、Rails、自定义 Webrick 代码等)处理重写。这需要您启动额外的红宝石“处理程序”来执行您的重写代码。对于低流量站点,这可能没问题,因为您可能已经预热过的进程什么都不做。但是,对于更高流量的站点,这是前端服务器(Apache、Nginx 等)无需启动 Ruby* 即可处理的服务器上的额外负载,并且可能会更快几个数量级。

*例如,如果您在负载均衡器后面运行,您可以将所有重写流量路由到未安装 ruby​​ 的服务器,并让您的主服务器只管理主要流量。这种重写流量可能是由于 SEO 的站点更改或类似原因。另一种情况是一个有多个组件的站点,可能一个部分是 Rails,另一个是 PHP,两者都需要重写(即重写旧的 PHP 路径到 Rails)

于 2012-06-02T04:01:58.230 回答
4

WEBrick 也无法处理更长的 URI,如果它们超过 2083 个字符,您将看到崩溃。Thin 没有这些问题,这使得它更加出色 - 已经在开发中。

于 2014-06-29T21:17:58.847 回答
3

我真的不喜欢把简单的事情复杂化和过早的优化。WEBrick 可以在生产中使用,前提是它是一个低流量的网站。大多数应用程序都是。

如果您的站点做一些需要时间的事情,例如发送电子邮件或生成 PDF 文件,您应该使 WEBrick 多线程。您想一次处理多个请求。

于 2014-01-06T00:32:14.797 回答
1

它过去曾出现过一些安全问题,但似乎主要原因是与用于生产的服务器相比,它的速度确实很慢。

于 2012-06-02T04:05:09.100 回答
0

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

于 2015-12-07T01:26:03.230 回答