Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Out of memory
- From: saino@xxxxxxxxxxxxxxxxxxxxxxxxxxx (Kazuhiko Saino)
- Date: Thu, 6 Jul 2000 17:45:45 +0900 (JST)
- X-ml-name: namazu-users-ja
- X-mail-count: 00657
さいのです
In article <200007060626.AA00495@xxxxxxxxxxxxxxxxxxxxx>
maeda@xxxxxxxxxxxxxxx writes:
>>どうも前田です。
>>申し訳ないです。また質問です。
>>過去メールなど読んで色々試してみたのですがギブアップです。
>>
>>mknmz を実行すると Out of memory! が出てしまいます。
>>過去メールなど読んで色々試しました。
>>
>>・$ON_MEMORY_MAX の値を変更する。(上げても下げてもOut of memory!)
>># ~/namazu-2.0.4/confにある"mknmzrc-sample"を"mknmzrc"に名前を変更して
>># その中の $ON_MEMORY_MAX の値を変更しました。(あってますか?)
>>
>>・オプションをつける
>>mknmz -s
>>mknmz -F
>>mknmz --checkpoint
>>mknmz -sF
>>mknmz -O
>>
>># すべてダメ。。
Out of memory! は様々なケースで発生するので一概に何をすれば解決する,
とは言えない部分があるようです。INDEX対象が10,000件以上ということです
ので,取り敢えず以下のことをやってみてはいかがでしょうか?
$ON_MEMORY_MAX を小さくする (既に試してますね)
$FILE_SIZE_MAX を小さくする
$TEXT_SIZE_MAX を小さくする
$WORD_LENG_MAX を小さくする
繰り返しmknmzする場合は,事前にgcnmzしておく。
でも駄目なら最後の手段ということで,インデックス対象ファイルリストを
予め作成しておき,1000ファイル位づつにスプリットして -YZ オプションを
付けて mknmz を行います。私はこの方法で30,000件(ファイル)以上のファ
イルをインデックス化してます。言葉で説明するとややこしいので,シェル
スクリプトを以下に記します。基本的にcronでも動くように書いてます。
#!/sbin/sh
export LANG=ja_JP.eucJP # ロケールの指定はOSによって異なります
export PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin # パスの指定
cd /usr/local/var/namazu/index # cronでも動くようディレクトリを移動
cat FILE.BAK > FILE.A # 空ファイルの初期化
mv FILE.A FILE.BAK
find /home/data -print | grep -i .html$ > FILE # 対象ファイルの抽出
find /home/data -print | grep -i .html$ >> FILE
find /home/data -print | grep -i .txt$ >> FILE
find /home/data -print | grep -i .text$ >> FILE
comm -13 FILE.BAK FILE | sort > FILE.CUR # 繰り返し実行時既に
mv FILE FILE.BAK # インデックス化したものを対象外にする
split -1000 FILE.CUR # インデックス対象を1000ファイルづつにわける
for flist in `ls x*` # splitしたファイルを一つづつmknmzする
do
/usr/local/bin/mknmz -sYZ -F $flist
done
rm x* # splitしたファイル郡を消す
ディレクトリパスなどは適当に変更して使ってください。
因に,実際私が使っているスクリプトはもうちょっと複雑になってます。
これが参考になれば幸です。
では。