メモリ使用量が増え続ける
最初の山: 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
(続き)
最初の山: 環境変数 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 # さらに上昇率は減ったが依然として横ばいにならない。
(ロングランさせてみた)
環境変数 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 使ってそうなので止めてリラン)
buffer/cache 含めて安定したっぽい(わずかに増減している) ^^
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR については、http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=45021&view=revision ぐらいしか資料がないが、
とのことらしい. つまり、前回の Full GC後に残っていた object の数に比して factor 分増加した場合にのみ Full GC を走らせる。1.0 より小さいと常に Full GC となる。