4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

本番RailsアプリケーションでのYJIT有効化とパフォーマンス改善結果

4
Last updated at Posted at 2025-11-19

はじめに

私が所属しているチームでは「Schooビジネスプラン管理ツール」という主に法人向けに Schoo を利用いただく為のSaaSを開発しています。

以前の記事ではRubyとRuby on Rails(以降Rails)のバージョンアップに関する記事を公開しましたが、今回はその「Schooビジネスプラン管理ツール」でRuby3.4、Railsを8.0にバージョンアップし、本番環境でYJITを有効化しましたので、その効果を紹介します。

環境

YJITを有効化した時の環境は以下の通りです。

  • Ruby : 3.4.2 (3.3.1からのアップデート)
  • Ruby on Rails : 8.0.2 (7.1.3からのアップデート)
  • YJITのオプションはデフォルトの状態

YJIT有効化

Ruby 3.3 以上でかつ Rails 7.2 以上であればデフォルトでYJITが有効になるので、特に何も設定する必要はありません。

ただし、Rails 7.1以下のアプリケーションでバージョンアップした際などはload_defaults7.2以上の値に設定する必要があります。
今回「Schooビジネスプラン管理ツール」ではRails 8.0にバージョンアップしたので、以下のように設定しました。

config/application.rb
config.load_defaults 8.0

また、実際にYJITが有効になっているかは以下で確認できます。

Rails.configuration.yjit
=> true

YJITの効果

レスポンス時間の改善

biz-rails__env_biz-prod____Datadog.png
アプリケーション全体のレスポンス時間です。リリース直後から改善されていることがわかります。

以降のグラフはリリース前後1週間の平均値の比較になります。
biz-rails__env_biz-prod____Datadog (1).png

パーセンタイル before after 改善割合
p50 10.1ms 7.4ms 26.7%
p90 24.3ms 21.2ms 12.8%
p95 47.5ms 43.9ms 7.6%

特にp50では26.7%の改善があり、とても大きな効果が出ていることがわかります。

リクエスト数が1番多いエンドポイント

biz-rails_Api__UsersController_show__env_biz-prod____Datadog.png

パーセンタイル before after 改善割合
p50 17.1ms 13.5ms 21.1%
p90 24.0ms 20.9ms 12.9%
p95 26.0ms 24.9ms 4.2%

こちらも全体的にレスポンス時間が高速化し、かなりのパフォーマンス改善が達成できています。

リクエスト数がその次に多いエンドポイント

biz-rails_Api__ContractsController_index__env_biz-prod____Datadog.png

パーセンタイル before after 改善割合
p50 7.09ms 3.92ms 44.7%
p90 8.79ms 5.30ms 39.7%
p95 9.36ms 4.61ms 50.7%

このエンドポイントはもともと一桁msとかなり爆速だったのですが、それが更に改善されて、WEBサイトのレスポンスタイムとしてはあまり見たことがないような数値にまで速くなりました。

メモリ使用量

biz-rails__env_biz-prod____Datadog (2).png

before after
3.16GiB 3.30GiB

アプリケーション全体でのメモリ使用量は約4%上昇していました。
YJITはパフォーマンスを改善する一方でメモリを多く使用するという性質を持ちますが、ここまでメモリ使用量を抑えることができているのは、Ruby 3.3での改善が大きいのではないかと思います。

またCPU使用率については、リリース前後で大きな変化は見られませんでした。
結果としてインフラコストを増やすことなく、純粋にパフォーマンスだけを向上できた形になります。

まとめ

プロダクトコードに手を加えることなく、Ruby / Railsのバージョンアップを行っただけでアプリケーション全体としてかなりのパフォーマンスを改善することができました。
また、本記事の執筆時点でリリースから数ヶ月以上経過していますが、これに直接起因した不具合や問題は全く発生していません。

今回の結果は Ruby / Railsのバージョンを追従し続ける ことに大きな価値があるということを改めて証明できたと考えています。また、同時にYJITを開発したRubyコミュニティー、コミッターの皆様に深く感謝申し上げます。

今回の結果が、皆さんのバージョンアップのモチベーションとなれば幸いです。


Schooでは一緒に働く仲間を募集しています!

4
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?