[groonga-dev,04066] Re: io_flushが大量のメモリを確保する

Back to archive index

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/




groonga-dev メーリングリストの案内
Back to archive index