Kouhei Sutou
kou****@clear*****
2011年 1月 10日 (月) 11:09:29 JST
須藤です。 In <AANLkTi=AnLYj****@mail*****> "[groonga-dev,00438] HTTP経由の連続ロード" on Fri, 7 Jan 2011 15:00:33 +0900, Kenichi Aramaki <arama****@mulod*****> wrote: > HTTP経由で利用しているのですが、メモリ使用量がどんどん増えるので困っています。 > 切り分けしてみたところ、1つのケースですが、ShortTextのベクタカラムに、25文字以上 > つっこむと現象が再現することがわかりました。(1.0.3/1.0.6にて確認) > (24文字までだと現象が出ません) > > テーブル定義 > table_create --name item --flags TABLE_HASH_KEY --key_type ShortText > column_create --table item --name vars --flags COLUMN_VECTOR --type ShortText > > データ(これをHTTP経由で投入) > [{"_key":"0001","vars":["012345678901234567890123456789","012345678901234567890123456789"]}] 報告ありがとうございます! 再現ケースがあってとても助かりました。 > という感じなのですが、使い方が間違っているなど、何かコメントいただけるとうれしいです。 groongaのバグだったので修正しました! 修正版がリリースされるまでの回避策としては以下の方法がありま す。 1. groongaコマンドでデータをロードする。 % groonga db_path < load-data.grn load-data.grn: load --table item [ {"_key":"0001","vars":["012345678901234567890123456789","012345678901234567890123456789"]}, ... ] 2. データロード用のgroongaサーバを一時的に立てて、それ経由 でロードする。 % groonga --protocol http --port 20041 -s db_path % wget http://groonga-server:20041/d/load.json?... % wget http://groonga-server:20041/d/shutdown.json どちらも、ロード用のプロセスを別途用意して、メモリリークの影 響をロード中のみに限定する方法です。 groongaはマルチプロセスに対応しているので、別プロセスでロー ドしたデータであっても、本groongaプロセスですぐに扱うことが できます。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) Mozilla Firefox/Thunderbirdサポート: http://www.clear-code.com/services/mozilla/menu.html 迷惑メール対策: http://www.clear-code.com/software/milter-manager.html テスティングフレームワーク: http://www.clear-code.com/software/cutter.html http://www.clear-code.com/software/uxu.html