Kouhei Sutou
kou****@clear*****
2016年 7月 5日 (火) 23:40:20 JST
須藤です。 In <20160****@orega*****> "[groonga-dev,04064] io_flushが大量のメモリを確保する" on Mon, 04 Jul 2016 17:34:40 +0900, 高見 直輝 <takam****@orega*****> wrote: > 【環境】 > PostgreSQL:9.4.5 > PGROONGA:1.0.2 > > 現在、サーバの電源断によるPGROONGAのインデックスファイル破損を回避するた > めに、GROONGAのio_flushコマンドを実行しています。 > ※[groonga-dev,03528] からの流れ > > このコマンドを使用したときに、postgresのプロセスが大量のメモリを確保する > のですが、これは正常な挙動なのでしょうか? はい、正常な挙動です。 今のio_flushの実装はすべてのテーブル・カラムをフラッシュしま す。このとき、まだ開いていないテーブル・カラムならそのテーブ ル・カラムのファイルを開いてフラッシュします。このファイルを 開いたときにリソースを確保するのでメモリー使用量が増えます。 ただ、まだ開いていないテーブル・カラムはフラッシュする必要は ないので、本当は開く必要はありません。近い将来、このケースの ときは開かないようにする予定です。 > なお、メモリの確保量はテーブル(インデックス?)の数又はサイズに比例して > 大きくなっているようです。 > 例) > データサイズ250MBのテーブルが1つ:135MB > 700MB×1つ、300MB×2つ、:960MB はい、傾向はそうなります。 (Groongaの)テーブル・カラムの数とそれらのサイズが増えると その分関連するリソースが増えるのでメモリー使用量は増えます。 テーブル・カラムの数が増える方が、サイズが増えるよりも、影響 は大きいです。 > テーブルに対して一切の操作を行っていない、つまり、上記Selectコマンドを連 > 続実行した場合でも、毎回同程度の容量が確保されています。 これは、実行する毎にメモリー使用量が増えていくということです か?たとえば、↑の「データサイズ250MBのテーブルが1つ」のとき は * 1回実行したら初期状態から135MB増え、 * 2回実行したら初期状態から270MB増え、 * 3回実行したら初期状態から405MB増え、 * ... ということですか?であればメモリーリークな気がするので調べて 直した方がよさそうに思っています。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> 10周年祝いイベント: https://clear-code.doorkeeper.jp/events/48646 Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/