hirano_verf****@mail*****
hirano_verf****@mail*****
2011年 12月 6日 (火) 16:50:13 JST
お世話になっております。平野と申します。
rroongaを利用して検索を繰り返すと使用メモリ(topコマンドでのRESの値)が徐々に増えていく現象が起こります。
[環境]
CentOS 5.5(x86_64)
ruby 1.8.7(patchlevel 330)
groonga 1.2.0
rroonga 1.2.0
検証を行ったソースの検索部分は下記のようになっています。
db_dir = '/data/groonga/mem_test/'
db_list = [
'test_01.db',
]
Groonga::Context.default_options = {:encoding => :utf8}
10.times{|select_try|
db_list.each do |db_name|
grdb = Groonga::Database.open(db_dir + db_name)
puts "--- #{db_name} select start #{select_try} ---"
500.times {|n|
records = Groonga["sample"].select do |record|
record["_key"] == n.to_s
end
}
puts "--- #{db_name} select finish. grdb.close start ---"
sleep(5)
grdb.close
puts "--- #{db_name} grdb.close ---"
sleep(5)
end
}
sampleテーブルのカラム数は200、10万レコードが格納されています。
closeした後のRESの値を監視しているのですが、実行初期は100MB程度、徐々に125MB程度まで増えていき、300MB以上に跳ね上がる場合もあります。
また、バージョンを上げてみても同様の現象が起こりました。
CentOS 5.5(x86_64)
ruby 1.9.2p290
groonga 1.2.8
rroonga 1.3.0
DBをcloseするとメモリは解放されると思っていたのですが、解放されないのでしょうか。
また、メモリ使用量を抑える方法がありましたら教えていただけないでしょうか。
よろしくお願いいたします。