[Namazu-users-ja 477] Re: mknmz の挙動について

Naoya Wakasugi naoyaw @ azb.nttls.co.jp
2005年 8月 29日 (月) 17:26:00 JST


若杉です。

> > mknmz::write_phrase_hash_sub(/usr/local/namazu2/bin/mknmz:2197):
> > 2197:                   my $adjrecord = adjust_first_docid($record, 
> > $last_docid);
> > mknmz::adjust_first_docid(/usr/local/namazu2/bin/mknmz:2381):
> > 2381:       my ($record, $last_docid) = @_;
> > mknmz::adjust_first_docid(/usr/local/namazu2/bin/mknmz:2382):
> > 2382:       my (@data) = unpack 'w*', $record;
> > Out of memory!
> 
> フレーズデータの書き出し時にメモリオーバーになっていますね。
> 
> これだけではわかりませんが、ここにくるまでにどんどんメモリが少なく
> なって、ここでたまたまメモリが足りなくて死んでしまったのか。
> あるいは、ここの unpack で(無限ループに近い状態になって)どんどん
> メモリを消費して死んでしまったかのどちらかでしょう。
> 
> # unpack で展開するから確かにメモリは消費するのだが...。
> 前者だと何処に問題があるのか、見つけるのは容易ではないです。
> 後者だと、たとえば $record の中身が壊れていて unpack でメモリを
> 大量に消費してしまったということが考えられるかもしれません。
> 
> あるいはフレーズデータが異常に大きすぎて...って可能性もあるのですが、
> それなら古い OS でも同じ問題がおきそうだしなぁ。

悲しいことですが、おそらく前者です。top コマンドでメモリの SIZE を見て
いると、古いサーバとは比べ物にならないほど、ぐんぐん上がっていきます。


> とりあえず、mknmz の中の write_phrase_hash(); を呼び出している2箇所
> をコメントアウトすると動いたりしませんか?
> また、その時のメモリ使用状況はやっぱり2000M近くまで消費している
> でしょうか?
> # この状態だとフレーズ検索ができませんので、あくまでもテストという
> # 意味ですが。

コメントアウトしてチャレンジしてみましたが、同じ結果になりました。

<終わりの方の出力>
インデックスを書き出しています...
Read on closed filehandle <_GEN_5> at /usr/local/namazu2/bin/mknmz line 1558.
Read on closed filehandle <_GEN_6> at /usr/local/namazu2/bin/mknmz line 1567.
Read on closed filehandle <_GEN_7> at /usr/local/namazu2/bin/mknmz line 1579.
Read on closed filehandle <_GEN_8> at /usr/local/namazu2/bin/mknmz line 1817.
Read on closed filehandle <_GEN_3> at /usr/local/namazu2/bin/mknmz line 990.
Read on closed filehandle <_GEN_4> at /usr/local/namazu2/bin/mknmz line 995.
[基本]
日付:                Mon Aug 29 17:06:39 2005
追加された文書の数:  271
サイズ (bytes):      10,040,200
合計の文書数:        271
追加キーワード数:    58,114
合計キーワード数:    58,114
わかち書き:          /usr/local/bin/chasen -j -F '%m '
経過時間 (秒):       436
ファイル/秒:         0.62
システム:            solaris
Perl:                5.00503
Namazu:              2.0.14

Use of uninitialized value at /usr/local/lib/perl5/5.00503/Cwd.pm line 82.
Use of uninitialized value at /usr/local/namazu2/bin/mknmz line 1982.
Read on closed filehandle <_GEN_9> at /usr/local/namazu-2.0.14/share/namazu/pl/util.pl line 253.



ちなみに、「合計の文書数:        271」となっていますが、実際に mknmz 
しようとしている文書数はもっと多数あります。

mknmz しようとしているディレクトリには html と pdf があるのですが、
267 ファイルまで行ったところで、いったんインデックスを書き出す(おそら
く ON_MEMORY_MAX に達する)のですが、そこから後で突然おかしくなり、
それ以降は pdf が全部 Unable to convert pdf file になってしまいます。

・・・と、ここまで書いて、 xpdf が怪しいような気がしてきました。ちょっ
と、xpdf のバージョンを下げてみます。





Namazu-users-ja メーリングリストの案内