puma 是唯一的多线程 Rails 4 http 服务器吗?

2024-02-25

我已经将我们的堆栈转换为 Rails 4(是的!)

我希望利用线程安全代码。

Puma 的工作是起床,停止它似乎是一个不同的问题:(

Puma 是唯一的多螺纹导轨吗?

Thin -> EventMachine
Unicorn -> Forking
Puma -> multi-threaded

Mongrel -> don't care
Webbrick -> don't care

否。按字母顺序排列:

  • Iodine https://github.com/boazsegev/iodineHTTP / Websocket 服务器和 EventMachine 替代方案(基于 kqueue/epoll)
  • Net::HTTP::Server https://github.com/postmodern/net-http-server尽管没有广告,但支持多线程
  • Phusion 乘客 https://www.phusionpassenger.com/已经支持多线程自 v4 测试版以来 http://blog.phusion.nl/2012/08/03/why-rails-4-live-streaming-is-a-big-deal/
  • 彩虹! http://rainbows.rubyforge.org/支持多种并发模型,包括多线程
  • Reel https://github.com/celluloid/reel/ is a 赛璐珞 http://celluloid.io/支持“事件”服务器,“也非常适合多线程应用程序,并且也提供传统的多线程阻塞 I/O 支持”
  • Thin http://code.macournoyer.com/thin/有一个线程模式,可以通过传递来启用--threaded或通过设置threaded: true在适当的配置文件中(例如bundle exec thin start --threaded)
  • WEBrick http://ruby-doc.org/stdlib-2.1.0/libdoc/webrick/rdoc/WEBrick.html它本身是多线程的,因此将其作为一种选择消除是不公平的;如果您使用的是 Rails 嵌入式版本,则需要猴子补丁Rails::Server启用多线程 https://stackoverflow.com/a/20940926/504845
  • Zbatery http://zbatery.bogomip.org/以彩虹为基础!并支持 Rainbows! 的所有并发模型!支持

请注意,目前MRI Ruby 一次仅运行一个线程由于其全局解释器锁(GIL) https://en.wikipedia.org/wiki/Global_Interpreter_Lock。您只能通过使用不同的 Ruby 运行时(例如JRuby http://jruby.org/ or Rubinius http://rubini.us/,它提供对本机线程的访问。如果您决定使用 JRuby,有几种选择值得探索的依赖 JVM 的服务器 https://github.com/jruby/jruby/wiki/Servers.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

puma 是唯一的多线程 Rails 4 http 服务器吗? 的相关文章

  • 类和互斥体

    假设我有一个类代表一些名为 foo 的数据结构 class foo public foo attr01 0 void f attr01 5 private int attr01 class fooSingleThreadUserClass
  • RabbitMQ-在一个应用程序进程中为单个队列创建多个消费者是一种好习惯吗

    我刚刚处理一个由 RabbitMQ 支持的新项目 并且在应用程序启动时创建了多个监听同一个队列的消费者实例 然而 它们与不同的渠道共享相同的连接 来自队列的消息非常庞大 一次生成行为有数百万条消息 因此我猜第一个代码作者正在尝试做一些事情来
  • Rails 中的并行方法

    我的 Rails Web 应用程序有数十种方法 从调用 API 到处理查询结果 这些方法具有以下结构 def method one batch query API process data end def method nth batch
  • 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

    有没有人解决这个问题Ruby 2 7 0 I used rbenv并安装了 Ruby v2 7 0 然后使用创建了一个 Rails 项目Rails v6 0 2 1 目前 通过运行之一 rails s rails s u puma rail
  • Java中的process_reaper线程是什么?

    随着时间的推移 我的应用程序中逐渐积累了数百个 process reaper 线程 有人知道这些可能是什么吗 它们似乎在我使用 Runtime exec 中 但是我在 finally 语句中破坏了我的进程 但它们仍然出现 截屏 http w
  • Shared_ptr 线程安全的开销是多少?

    std shared ptr保证是线程安全的 我不知道典型的实现使用什么机制来确保这一点 但肯定它必须有一些开销 即使您的应用程序是单线程的 这种开销也会存在 是上述情况吗 如果是这样 如果您不使用线程安全保证 这是否意味着它违反了 您不为
  • Python Tkinter,停止线程函数

    我目前正在为 3D 打印机开发 GUI 并且遇到如何停止线程函数的问题 我希望能够单击 GUI 中具有另一个功能的按钮 该按钮将阻止线程函数通过串行端口发送 G 代码字符串 目前 该函数已合并线程 以允许在打印期间触发其他函数 我非常感谢有
  • 用于 RESTful 轨道应用程序的简单面包屑

    是否有任何辅助方法 除了默认 Rails 面包屑导航 http wiki rubyonrails org rails pages Breadcrumbs 为特定页面动态生成面包屑导航 而无需在 RESTful 应用程序中传递琐碎的参数 也就
  • 在 Python 中共享多处理内存的更好方法?

    我已经解决这个问题一周了 它变得非常令人沮丧 因为每次我实现一个更简单但相似规模的示例来说明我需要做的事情时 事实证明多重处理都会把它搞砸 它处理共享内存的方式让我感到困惑 因为它非常有限 很快就会变得无用 所以我的问题的基本描述是 我需要
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • Memcachier 达到缓存限制时 Heroku 请求超时

    我使用 Memcachier Dalli 作为客户端 将 Rails 应用程序部署到 Heroku 我正在使用免费插件 提供 25 MB 缓存 我们开始收到来自heroku的请求超时 经过调试 我们发现手动刷新Memcachier解决了问题
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • 使用 Matplotlib、PyQt 和 Threading 进行实时绘图导致 python 崩溃

    我一直在努力研究我的 Python 应用程序 但找不到任何答案 我有 PyQT GUI 应用程序 它使用 Matplotlib 小部件 GUI 启动一个新线程来处理 mpl 小部件的绘图 恐怕我现在通过从另一个线程访问 matplotlib
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 如何从 Android 调用 RESTful 方法?

    我尝试了两种不同的方法来从 Android 调用简单的 REST 方法 所述 REST 方法 适用于其他客户端 仅返回一个 int val 例如 17 以下两次尝试都是基于我在网上找到的代码 有一种是这样的 公共无效onFetchBtnCl
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • Rails 3 Mechanize - SocketError:getaddrinfo:主机或名称未知

    我正在使用 mechanize 但出现此错误 有人可以帮帮我吗 我已将元刷新设置为 true 错误日志 SocketError getaddrinfo Host or name not known form C Ruby192 lib ru
  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 如何在服务调用后检查 rspec 中的数组更改?

    目标很简单 例如我们有一个数组 name ghost state rejected name donkey state rejected 运行服务调用后UpdateAllUsers 这会将所有用户更改为 accepted name ghos
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们

随机推荐