[groonga-dev,04970] Re: Mroongaのalloc_countの増加について、cache_limitの恒久設定方法

Back to archive index
Sutou Kouhei kou****@clear*****
2022年 4月 22日 (金) 10:12:29 JST


須藤です。

In <CAF1BLYEacMf8=q6kVhXBbXq2DKU1quEs503ik2pai1Z1_xyCEQ****@mail*****>
  "[groonga-dev,04966] Re: Mroongaのalloc_countの増加について、cache_limitの恒久設定方法" on Tue, 19 Apr 2022 18:25:31 +0900,
  Mitsuo Yoshida <y****@ceek*****> wrote:

> alloc_count の増加については、どのようなものが正常でしょうか。

内部でmruby(アプリケーション組み込み用のRuby実装)を使って
いる箇所があるのですが、そこの処理で増えた分についてはすぐに
減らなくても正常です。というのは、mrubyにはGCが組み込まれて
いるためGCされるタイミングでまとめてalloc_countが減るからで
す。なので、長い目で見て増加傾向になければ大丈夫です。

mrubyを使っていない箇所で増えている場合は問題です。確保して
メモリーを開放できていないのでメモリーリークです。

> 私も、仮想メモリが増加し続け、クラッシュする問題に悩まされており、現状では日時の FLUSH TABLES でメモリを解放して回避しています。

おぉ。。。
そういう状況が発生したら詳細はおいおいでもよいのでとりあえず
共有してもらえると助かります。

> 手元の環境で、実行してみたところ、以下の結果でした。
> alloc_countが常に2または5増加しています。

ありがとうございます!
これは非常に助かります!

> 実行2:
> → 実行の度に alloc_count が必ず5増加
> 
> SELECT
>   COUNT(*)
> FROM
>   news_latest
> WHERE MATCH(title,content) AGAINST('*D+ 次期衆院選' IN BOOLEAN MODE);

このケースがMariaDB 10.5で再現したので直しました。
(吉田さんもMariaDB 10.5を使っていますか?)

たぶん、他のケースも同じ原因だと思います。

Mroonga内にalloc_count4つ分開放もれがありました。
(メモリーリークです。)

Groonga内のmrubyの処理のところでalloc_countが1つ増えていまし
たが、これはいずれGCで開放されるやつなので問題ないやつです。
が、そもそも今回のケースではalloc_countが増えない実装にして
おきました。

いつから発生していたかなんですが、なんと、Mroonga 11.03から
発生していました。一年弱前です。。。

残念ながら設定での回避策はありません。

来週のリリースを待ってアップグレードするか
https://github.com/mroonga/mroonga/actions/runs/2205159346
のCIの成果物として再生されるパッケージでアップグレードするか、
定期的に再起動あるいはFLUSH TABLESするかが対策になります。


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