Running on Ruby 2.7

This site is running Puma on a Heroku 1X dyno. Following are some metrics switched from Ruby 2.6 to 2.7.

Background

MALLOC_ARENA_MAX=2
RAILS_MAX_THREADS=5
RUBY_GC_HEAP_GROWTH_FACTOR=1.03
WEB_CONCURRENCY=4
RUBYOPT=--jit

and in puma config:

# config/puma.rb
before_fork do
  GC.compact if GC.respond_to?(:compact)
end

Observations

  • Ruby: Heap Objects (MAX Freed): 2.6 ~400k, 2.7 ~15k
  • Ruby: Free Memory Slots (AVG): 2.6 ~35k, 2.7 ~500

Ruby 2.7 seems to use as much memory as possible.

Response time was about 300-400ms in Ruby 2.6, <200ms in Ruby 2.7.

Gems to work with Ruby 2.7

  • Rails master fixed most of warnings (2020.01.02)
  • Sprockets, Sprockets Rails master
  • Octokit 4.15.0
  • pg 1.2.0 (ged/ruby-pg#307)