Skip to content

Instantly share code, notes, and snippets.

@sonots
Last active June 19, 2020 05:56
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sonots/9284182 to your computer and use it in GitHub Desktop.
Save sonots/9284182 to your computer and use it in GitHub Desktop.
fluentd w/ ruby 2.1.1 の進捗ダメです。 #=> ロングランさせると安定しました

メモリ使用量が増え続ける

memory

最初の山: ruby 2.1.1 + fluentd v0.10.43 + cool.io v1.1.1 + msgpack v0.5.8 # ruby バージョンアップして、他の gem は安定稼働している本番と同じにした(同じ Gemfile.lock を使った)

2つ目の山: ruby 2.1.1 + fluentd v0.10.43 + cool.io v1.1.1 + msgpack v0.5.5 => 安定したかと一瞬思ったが "can't modify frozen String" 例外が出て何も処理できていなかっただけっぽい. v0.5.6 で修正された https://github.com/msgpack/msgpack-ruby/blob/master/ChangeLog

3つ目の山: ruby 2.1.1 + fluentd v0.10.43 + cool.io v1.1.1 + msgpack v0.5.6

4つ目の山: ruby 2.1.1 + fluentd v0.10.44 + cool.io v1.2.1 + msgpack v0.5.6

(続き)

memory2

最初の山: 環境変数 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.2 + ruby 2.1.1 + fluentd v0.10.44 + cool.io v1.2.1 + msgpack v0.5.6 # 上昇率は減ったが依然として横ばいにならない。

2つ目の山: ruby 2.0.0p451 + fluentd v0.10.44 + cool.io v1.2.1 + msgpack v0.5.6 # まだ少ししか観測していないが安定した。 2.0.0 なら大丈夫そう

3つ目の山: ruby 2.0.0p451 + fluentd v0.10.44 + cool.io v1.2.1 + msgpack v0.5.8 # 1度安定してからメモリ使用量が伸びてしまったがこれは朝になってアクセス量が増えたから?正常な気もするのでちょっと追試する。

4つ目の山:環境変数 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9 + ruby 2.1.1 + fluentd v0.10.44 + cool.io v1.2.1 + msgpack v0.5.8 # さらに上昇率は減ったが依然として横ばいにならない。

(ロングランさせてみた)

long_run

環境変数 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9 + ruby 2.1.1 + fluentd v0.10.44 + cool.io v1.2.1 + msgpack v0.5.8 でロングラン # 実メモリ使用量は安定したが、buffer/cache が依然としてちょっとずつ増えているの気になる

(仕込んでいた gc_trace のファイル出力が buffer/cache 使ってそうなので止めてリラン)

no_gc_trace

buffer/cache 含めて安定したっぽい(わずかに増している) ^^

@sonots
Copy link
Author

sonots commented Mar 2, 2014

fluentd w/ ruby 2.1.1 における GC.stat と ObjectSpace の情報をとってみた。https://gist.github.com/sonots/9304344

@sonots
Copy link
Author

sonots commented Mar 2, 2014

ちなむと ruby 1.9.3 ではこんなかんじ

1.9.3

@sonots
Copy link
Author

sonots commented Mar 5, 2014

RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR については、http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=45021&view=revision ぐらいしか資料がないが、

"RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR" to control major/minor GC
frequency.
Do full GC when the number of old objects is more than R * N
where R is this factor and N is the number of old objects just after last full GC.

とのことらしい. つまり、前回の Full GC後に残っていた object の数に比して factor 分増加した場合にのみ Full GC を走らせる。1.0 より小さいと常に Full GC となる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment