Namazu-users-ja(旧)


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

mknmz 時にメモリを食い潰す



多田@大阪大学です.

FreeBSD 3.3-RELEASE (実メモリ 64MB.swap 128MB)
perl5.00503
Namazu 2.0.1
chasen-2.02
という環境で使用中です.

インデックスを作るときに,対象ファイルに圧縮ファイルがあるとそれを伸長
して処理しますが,その圧縮ファイルの圧縮率が非常に高かった場合,swap
メモリを食い潰してしまいインデックスを作れないという現象にあったので報
告します.

問題のファイルは画像を多用した PS ファイルを圧縮したもので,
% gzip -l ronbun.ps.gz
compressed  uncompr. ratio uncompressed_name
  1362493  17159434  92.0% ronbun.ps
となってます.

mknmzrc はデフォルトのままでインデックスを作ると,
% mknmz -V .
@@ 設定ファイルを読み込み中: 
@@  /usr/local/etc/namazu/mknmzrc
@@ 対象の探索を開始: Thu Mar 16 17:05:48 2000
@@ 適合:	/tmp/ronbun.ps.gz
@@ 対象の探索を終了: Thu Mar 16 17:05:48 2000
@@ 対象ファイル数: 1 (走査性能: 経過秒: 1, ファイル/秒: 1.0)
@@   潜在: 1, 不許可: 0, 拒絶: 0, 除外: 0
@@   MTIME 古すぎ: 0, MTIME 新しすぎ: 0
1個のファイルがインデックス作成の対象として見つかりました
@@ モジュール: gzip.pl
@@ Processing gzip file ... (using  '/usr/bin/gzip')
強制終了
%
コンソールには

swap_pager: out of swap space
Mar 16 17:11:49 **** /kernel: pid 5794 (perl5.00503), uid ****, was killed: out of swap space

と出力されてます.

私のところでは PS ファイルをインデックスする必要がないので,DENY_FILE
に追加しましたが,plain text でも起る(こんな大きな text ファイルは通常
考えられませんが)と思われますので報告します.

# FAQ の out of memory の項は知っていますが,圧縮ファイルについては
# FILE_SIZE_MAX があまり意味をなさないと思ったので報告しました.

この現象は圧縮ファイルを伸長する前に gzip -l で伸長後のファイルサイズ
と FILE_SIZE_MAX を比較すれば回避できると思うのですがいかがでしょうか.

---
Yasunori Tada<tada@xxxxxxxxxxxxxxxxxxxxxxxx>