mastodon.zunda.ninja is one of the many independent Mastodon servers you can use to participate in the fediverse.
Zundon is a single user instance as home of @zundan as well as a test bed for changes of the code.

Administered by:

Server stats:

1
active users

弊ぼっちのRubyさんです

~ $ ruby --version
ruby 3.2.0 (2022-12-25 revision a528908271) [x86_64-linux]
~ $ ruby -e 'puts GC.stat'
{:count=>5, :time=>7, :heap_allocated_pages=>30, :heap_sorted_length=>205, :heap_allocatable_pages=>175, :heap_available_slots=>30488, :heap_live_slots=>28320, :heap_free_slots=>2168, :heap_final_slots=>0, :heap_marked_slots=>15896, :heap_eden_pages=>30, :heap_tomb_pages=>0, :total_allocated_pages=>30, :total_freed_pages=>0, :total_allocated_objects=>67816, :total_freed_objects=>39496, :malloc_increase_bytes=>411392, :malloc_increase_bytes_limit=>16777216, :minor_gc_count=>3, :major_gc_count=>2, :compact_count=>0, :read_barrier_faults=>0, :total_moved_objects=>0, :remembered_wb_unprotected_objects=>182, :remembered_wb_unprotected_objects_limit=>274, :old_objects=>15253, :old_objects_limit=>25350, :oldmalloc_increase_bytes=>501376, :oldmalloc_increase_bytes_limit=>16777216}

man rubyによるとフルGCを走らせるのは old objectの数が、RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR環境変数 × 前回のフルGC後のold objectの数を越えた時で、デフォルトは2.0。前回…。

他に、RUBY_GC_OLDMALLOC_LIMITとRUBY_GC_OLDMALLOC_LIMIT_MAXもfull GCのトリガに関係しているみたい。

./gc.c にあった。GitHubの検索では見つからないのかしら。

とりあえずfull GCを始める時にログを書いてほしいなと思ったんだけどRGENGC_DEBUG関連はコンパイル時に設定されてるみたいだ。時々弊ぼっちがのっそりするのはfull GCのせいだと仮定して話を進めるね。

gc.cよりデフォルトはたぶん下記(OLDMALLOC_LIMITのデフォルトは〜_MINとして書かれている)。
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR 2.0
RUBY_GC_OLDMALLOC_LIMIT 16 * 1024 * 1024
RUBY_GC_OLDMALLOC_LIMIT_MAX 128 * 1024 * 1024

RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTORとRUBY_GC_OLDMALLOC_LIMITを2倍にしてみようかな。とりゃ。

$ heroku config:set RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=4.0 RUBY_GC_OLDMALLOC_LIMIT=33554432

zunda

とりあえずPumaさんは起動してきてくれた。

Sidekiqさんも無事に起動。これでしばらく様子見だね。

弊ぼっちのPuma+Sidekiq 1スレッド、full GCしづらくすてから今のところもっさりしてない気がするヨシヨシ

一晩置いたけどまだもっさりしてない(Libratoさんからしきい値警告のメールをもらってない)。Full GC減らす方向にパラメータを変えてみたの良かったのかも。

Scoutさんでも確認。Full GCをしづらくした(左1/3くらい)らメモリ利用量は少し高どまりして、応答時間のスパイクは減ったように見える。

弊ぼっちののっそり24時間起きなくて偉い!! たぶん24時間ごとのdynoの再起動までfull GCせずに済んだっぽいンフフ