Kouhei Sutou
kou****@clear*****
2013年 8月 29日 (木) 14:31:38 JST
須藤です。 In <CANM+HhfteP6Xz_GYCJQ****@mail*****> "[groonga-dev,01723] Re: 仮想メモリサイズを超えるmroongaのインデックス構築について" on Thu, 29 Aug 2013 12:56:58 +0900, Naoya Murakami <visio****@gmail*****> wrote: > パッチ+さらなるスワップ追加が必要ということでしょうか? いえ、パッチあるなしに関わらずスワップの追加が必要ということ です。(予測ですが。。。) > それとも、今回の落ち方であればパッチだけでも解消できる > 可能性がありますか? いえ、ありません。落ちなくなるかもしれませんが、インデックス の構築は失敗します。理由は必要なメモリを確保できていないから です。 (あれ、メモリを確保できていないとしたらmalloc failというロ グがでていそうだけどでていないなぁ。。。mallocが失敗している という予想が間違っているのかしら。。。) > 次のアクションとして、(1)パッチだけ試した方がいいのか、 > (2)パッチ+さらなるスワップを追加して試した方がいいのか、 > を知りたいです。1アクションに時間がかかるので。。 もし余裕があるのなら(1)+「mallocが本当に失敗しているかを調べ る」(手順は後述)をしてもらいたいのですが、今のgroongaで 90GiBのデータのオフラインインデックス構築は難しそうなのでお 願いしづらいなぁというのが正直なところです。 また、スワップの追加は大変だと思うので、(3)データの持ち方を変 えるのが現実的だと思います。せっかくいろいろ試してもらったの にすみません。。。 今は、ftextの title,abstract,claims,description_19xx,description_20xx,property のマルチカラムインデックスを作るところで落ちています。もし、 ↑の中のうち、特定のカラムだけがサイズが大きいのではなく、全 体的にサイズが大きいのであれば1つのインデックスに入れるカラ ムの数を減らせば今のスワップでもいけるかもしれません。 例えば、 * title: 10GiB * abstract: 10GiB * claims: 10GiB * description_19xx: 20GiB * description_20xx: 20GiB * property: 20GiB ↑というような感じで全部で90GiBになっているなら title,description_19xx abstract,description_20xx claims,property なインデックス3つにわけると今のスワップでもいけるかもしれま せん。 検索するときにMATCH AGAINSTを複数指定しないといけなくなりま すが。。。 後述するといった「mallocが本当に失敗しているかを調べる」手順 は以下のとおりです。余裕があれば試してもらえればうれしいです。 gdb経由でmysqldを起動します。runを実行する前にmallocが失敗し たところにブレークポイントをしかけます。そうすると、ctx.cな んてファイル知らないけどそれでもブレークポイントしかけるの? と聞かれるのでyと答えます。 (gdb) break ctx.c:2563 No source file named ctx.c. Make breakpoint pending on future shared library load? (y or [n]) y <- yと入力 このあとmysqldを実行します。 (gdb) run これでmallocが失敗したらgdbのプロンプトがでてきます。このと き、バックトレースのバックトレースをとってほしいです。 (gdb) thread apply all backtrace full > 前に追加スワップ230Gぐらいまでは試したのですが、さらにあげないとだめですかね。 そんな気がしています。ただ、それが確実というわけではなく予想 というのがアレなんですが。。。 > 別に2TのSSDのサーバもありますので、最悪、こちらのデータを一時退避させれば、 > スワップ1Tぐらいにして試すことは可能といえば可能です。 > が、移動が大変ですし、SSDのスワップ1Tはもったいなすぎるので、あまり > やりたくない感じです。 ですよねぇ。 わかります。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コミットへのコメントサービスはじめました: http://www.clear-code.com/services/commit-comment.html