在 Discourse 上生产环境中运行 Ruby 3.2 的 YJIT

在 Discourse,我们一直渴望采用 YJIT,自从 Shopify 的 Ruby on Rails 基础设施团队 宣布其已准备好投入生产以来。在观察到有希望的本地基准测试后,我们于 2023 年 5 月初开始在选定的集群上运行我们的生产 Rails 应用程序,并启用了 Ruby 3.2 的 YJIT。然后,我们花了一些时间来衡量其在现实世界中的性能。我们很高兴分享我们观察到的积极结果。基于这些发现,我们现在已在所有托管中启用了 YJIT,自托管用户也可以选择这样做。


这是原始条目 https://blog.discourse.org/2023/05/running-ruby-3-2s-yjit-in-production-at-discourse/ 的配套讨论主题
21 个赞

我们从 2022 年 11 月开始对 Discourse+YJIT 进行基准测试,并从今年 1 月开始断断续续地在 Meta 上运行 YJIT。YJIT 是我们在几个月内将 Ruby 升级从 2.7 一直升级到 3.2 的原因之一,我很高兴它终于来了。更令人兴奋的是,Ruby 3.3 的改进看起来会更好!

14 个赞

Ruby 的开发进展令人印象深刻……我以为现在所有酷炫的人都在用 Python 了?!:sweat_smile:

干得好,团队,跟上了 Ruby 的路线图。

12 个赞

这可能是一个愚蠢的问题,但“容器定义文件”是指 app.yml 文件吗?我以前从未听过这样称呼它。谢谢!

3 个赞

是的,就是这样。我们使用了完整的名称,因为有些人可能会重命名或拥有多个“app.yml”文件。

5 个赞

Ruby 2.7 和 3.2 之间的比较,并加入 JIT 功能,将非常有趣!

2 个赞

来自我1月4日的笔记:

刚刚重新运行了

Ruby 服务器 p 分类 主页 主题 分类用户 主页用户 主题用户 分类管理员 主页管理员 主题管理员
2.7.5 Unicorn 50 34 59 36 82 112 93 67 94 72
3.1.2 Unicorn 50 34 61 36 82 112 91 67 94 70
3.2.0 Unicorn 50 33 59 36 82 111 90 68 92 72
3.2.0 +YJIT Unicorn 50 25 42 29 67 89 77 58 76 56

2.7 到 3.2 + YJIT 加速

加速 分类 主页 主题 分类用户 主页用户 主题用户 分类管理员 主页管理员 主题管理员
1.36 1.40 1.24 1.22 1.25 1.20 1.15 1.23 1.28

7 个赞

并且没有任何测量数据,仅基于一两个用户的感受和看法。

对我来说,这个论坛已经慢了一段时间了。几乎每次打开一个主题时,我都会看到一个短暂的旋转圆圈。当然,这可能而且几乎肯定来自服务器以及美国和欧洲之间的距离。但 Meta 比以前慢了。

我在我的论坛上开始使用 YJIT,当服务器在德国而用户是芬兰人时,每个人都说所有主题打开得更快。这实际上很有趣,因为我们看不到纯加载时间低于 200 毫秒的变化。

1 个赞

我一直在考虑固定(或一致)的页面加载时间。让每个页面和每个用户的加载时间尽可能一致。

关于芬兰用户的信息很有趣,这让我怀疑我们是否可以根据 GEO IP 或延迟将用户路由到具有不同负载的不同服务器,以节省他们的响应时间。

1 个赞

这些结果是否不包括数据库访问?

我已在 exiges.com 上启用了此功能。

我承认没有进行基准测试,但我能分辨出主题和帖子打开方式的差异。

这一定是一个积极的举措,因为用户没有向我反映其他情况 :slight_smile:

1 个赞

是的,我们仅在计时中测量执行 Ruby 代码所花费的时间,不包括数据库查询和 Redis 命令。

1 个赞