Kis*_*are 5 ruby-on-rails ruby-on-rails-5
我试图找出Puma和Webrick之间的区别,但并没有感到满意或满意。
因此,任何人都可以分享有关它的信息。
默认情况下,WEBrick是单线程,单进程。这意味着,如果同时有两个请求,则第二个必须等待第一个完成。
解决慢速I / O的最有效方法是多线程。一个工作进程在其中产生了几个工作线程。每个请求都由这些线程之一处理,但是当它暂停I / O时(例如等待数据库查询),另一个线程开始工作。这种快速的来回过程可以最大程度地利用您的RAM限制,并使CPU保持繁忙。
因此,使用Puma可以实现多线程,这就是为什么它将其用作Rails App中的默认App Server。
这是 Ruby on Rails 开发人员而不是广大受众的问题,因为我不明白为什么要让开发环境更接近生产,而 Puma 是一个可靠的选择。
然而,为了纠正当前的答案,我必须说Webrick 是并且一直都是多线程 Web 服务器。它现在附带 Ruby 语言(并且还提供 rubygem)。它绝对足以为 Rails 应用程序的开发或较小规模的生产环境提供服务。
另一方面,它不像 Puma 等其他 Web 服务器那样可配置。它还基于老式的按请求新线程设计。这可能是重负载下的一个问题,可能导致创建太多线程。现代 Web 服务器通过使用线程池、工作进程或两者或其他技术的组合来解决此问题。这包括 Puma,但是对于开发来说,每个请求生成一个新线程是完全可以的。
我对这两者都没有什么不好的感觉,两者都是很棒的 Ruby Web 服务器,在我们的项目中,我们实际上在生产中使用了它们。不管怎样,如果你喜欢使用 Webrick 进行 RoR 开发,你确实仍然可以使用它:
rails server webrick
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1551 次 |
| 最近记录: |