Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Too many open files



臼田です

(金城 尚志) wrote:
> # ただ、巨大なファイル数のPDFはインデクシングの途中で、「Too many...」
> # で止まってしまうのですが、それらを分割することによって、
> # インデクシングが完了することを確認しました。
> # つまり、13650個のファイル数ではフェールドするのですが、
> # 2000個のファイル数づつ、インデクシングを行うとうまくインデクシングが
> # 完了しました。
一度に作成しなければ成功するということから
特定のpdfファイルが悪いのではないということのようですし、
(完了はしていてもなにかエラーメッセージが出ているの
かもしれませんが)

> mknmz実行時のオプション
> -----------------------------------
> mknmz -s -T $TEMPLATE -O $INDEX $DATA
checkpointオプション"-s"をつけたときに
エラーが出ているということですから、何回目かの
execのし直し時になにか起きているのでしょうね
mknmzrc の $ON_MEMORY_MAX はどれくらいの数値でしょうか?


> mknmz: >/usr/local/var/namazu/index/pdf/NMZ.wi.tmp : Too many open files
というエラーはファイル名から推測するとインデックス書き
出し時に呼び出されるmknmzのサブルーチン
sub write_index_sub() の
my $fh_wi = util::efopen(">$var::NMZ{'_wi'}");
という部分で出ていると思われます。
checkpointが有効のときは複数回呼び出されるので
ファイルのオープン数が多くなるのかもしれないですね。
サブルーチンから戻ったときに自動的にクローズされている
とは思うのですが
write_index_sub() からreturnする前に
明示的に
   close($fh_tmp_i);
   close($fh_tmp_w);
   close($fh_i);
   close($fh_ii);
   close($fh_w);
   close($fh_wi);
としてクローズさせたら良くなるのかも?


> [kinjo@T00-0248 kinjo]$ nkf -V
> Network Kanji Filter Version 2.0 (1/0209/Shinji Kono)
NKF perlモジュール の 2.0.1をお使いのようですが
http://sourceforge.jp/forum/forum.php?forum_id=1703
にあるとおりこのバージョンのperlモジュールはセグメンテー
ションフォルトを起こすことがあるようです。
最新バージョン2.0.4に更新されることをお勧めします。


> 気になったのですが、
> $ mknmz -C
> で出力されるPerlのバージョンと
> $ perl -v
> で出力されるPerlのバージョンが異なりますので、
> これをどちらかに適合させればよいのかもしれませんね。
Perl: 5.008 というのは v5.8.0 のことで同じものを指しています。
下記のように実行すると確認できます。
$ perl -e 'print $] ;'

臼田幸生