トレタ開発者ブログ

飲食店向け予約/顧客台帳サービス「トレタ」、モバイルオーダー「トレタO/X」などを運営するトレタの開発メンバーによるブログです。

Rubyを2.0から2.3にバージョンアップした効果とか

インフラをチョメチョメしている佐野です。今日はRubyを現最新バージョンの2.3.1にアップデートしたのでその効果について書きます(2.0、とっくにEOLですしね...)。gemのバージョンアップはserizawaニキがやってくれました。結論から言いますと、

  • CPU使用率が劇的に下がり、メモリ使用率が少し上がった。
  • サーバ台数削減できる。

です。

CPU

f:id:hiroakis:20160907163559p:plain

9/6の昼過ぎくらいに2.3に切り替えたのですがそれ以降、CPUが下がっていることがわかります。

メモリ

メモリについては使用率が上がっています。

  • 2.3

f:id:hiroakis:20160907163610p:plain

  • 2.0

f:id:hiroakis:20160907163625p:plain

何が使っているのかというと、Ruby2.3なプロセスのメモリ使用量が全体的に増えました。次のtopコマンドは左ペインが2.3、右ペインが2.0なのですが、rubyないしbundleとなっているものがunicorn, sidekiqになります。これら全般的に2.3の方がメモリ使用量が多いです。 ちょっと気にしていたら、TLにてhttps://github.com/ko1/nakayoshi_forkなるものがあると教えていただいたのですが、まだ試していません。

f:id:hiroakis:20160907163546p:plain

性能

簡易的に測定しました。ヘルスチェックパス(DBアクセスあり)に10000発のHTTP GETを投げてみた際の処理時間です(3回ほど試行)。2.3選手の方が3回ともかなり早い結果となりました。

  • 2.3
counts: 10000 total time: 120.01s
counts: 10000 total time: 128.66s
counts: 10000 total time: 120.59s
  • 2.0
counts: 10000 total time: 207.34s
counts: 10000 total time: 199.82s
counts: 10000 total time: 230.72s

なのでバージョンageていったらいいと思います。簡単ですが以上です。

おわり

© Toreta, Inc.

Powered by Hatena Blog