PlumeでLindera版を起動するとメモリー消費が激しい

Plumeをsearch-linderaフィーチャー付きでビルドしたバージョンのDockerイメージをDocker Hubに置くようにした: kitaitimakoto/plume

これを使ってさっそく検索機能を日本語対応させて(環境変数SEARCH_LANG=jaを設定)、Kubernetesで使ってるイメージをアップデートしてみた。ところが、中々起動しない。起動してもすぐにエラーになってコンテナが落ちてしまう。

どうも、メモリー消費が激しくて、マシンのキャパをオーバーしてしまっているようだ(PlumeでLindera版を起動するとメモリー消費が激しい)。

しょうがないからこのコンコニではN-gramトークナイザーを使うことにした。空白文字でのトークナイザーよりは、日本語文書に対してはまだましだからね。環境変数

  • SEARCH_TAG_TOKENIZER=ngram
  • SEARCH_CONTENT_TOKENIZER=ngram

でトークナイザーを指定できる(ように以前パッチを送っておいた)。

さてこのメモリー問題、マシンのメモリーを増やす以外に解決策ないよな……。Plumeは一つのプロセス内でブログのウェブアプリケーションと検索エンジンを両方動かしていて、ウェブアプリの方からもRustの中で検索機能を呼び出している。なので単にPlumeを(日本語形態素解析器付きで)動かすだけで、検索機能用のメモリーが必要になってしまう。groonga-httpdとかElasticsearchみたいに、別マシンで動かしてHTTPで通信するタイプが広まるの、当たり前だよなあと思えてしまう……。

とは言えLinderaトークナイザーはメモリー食い過ぎの気もする。調べたわけでもベンチマーク取ったわけでもないから只の言い掛かりだけども……。