namazu-ml(avocado)


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

[result] Out of memory! (mknmz)



加藤です.

お久しぶりです.

あれから,皆様から様々な暖かいアドバイスをいただいていたのにも関わらず,
何もご返事しなくてどうもすみません.

おかげさまで何とか当方でも Namazu 君が元気に泳ぐようになりました.どう
もありがとうございました.> all

その顛末を御報告いたします.



1.症状
  mknmz を実行中に Out of memory! と OS にいわれ,core dump してしまう.


2.環境
(A) FreeBSD 2.1.5-RELEASE
(B) perl 5.004_04 built for i386-freebsd
(C) nkf 1.62 (4/9609/Shinji Kono, COW)
(D) kakasi-2.2.5.tar.gz, kakasi-ext.tar.gz, kakasidict.940620.gz
(E) MHonArc v2.2.0
(F) Namazu Version 1.1.2.3 / 1.1.2.4
(G) メモリ
	% limit
	datasize        65536 kbytes
	stacksize       65536 kbytes
	memoryuse       31236 kbytes

	% limit -h
	datasize        131072 kbytes
	stacksize       65536 kbytes
	memoryuse       unlimited
    という程度.


3.インデックスにかけた入力データ
・ローカルニュースでイソトラネットを実現した記事を (E)MHonArc で HTML 
  に変換した代物.
・規模は,ファイル数約 5000,150Mbyte.
・イソトラネットなので,別紙1のような base64+lha なファイルがある.
・イソトラネットなので,別紙2のような base64 の途中部分なファイルがある.


4.対策
 以下の (1)-(3) の対策をすべて実施した結果,無事,インデックスの作成
が終了した(このうち一つでも欠けると即 Out of memory! になった).

(1) mknmz 中の変数 $ON_MEMORY_MAX を
	$ON_MEMORY_MAX   = 1000000;
    とデフォルトの 1/5 に絞った.
(2) mknmz 中の変数 $FILE_SIZE_LIMIT を
	$FILE_SIZE_LIMIT = 75000
    に絞った (デフォルトは 1000000)
(3) アーカイブのインデックスを一度に作成しないで,500 ファイルずつに分
    割する.
    具体的には -F オプションで指定するファイル群を 500 ファイルに分割
    し順次与える.

※できあがったインデックス (NMZ.i) は,約 90Mbyte となった.


5.考察
 別紙1や別紙2のような base64 なファイルが存在しているため,インデッ
クスファイルが巨大化し,その結果,Out of memory を引き起こしている.実
際に /usr/local/namazu/bin/wdnmz NMZ.i したところ,別紙3のような 
base64 encode をそのままインデックスしている様子がうかがえた.


6.今後の展開
 いずれも暇が見つかれば (^_^;;; ですが....

(1) MHonArc の本来の機能からすれば,別紙1のような Multipartで添付され
    たファイルは decode してリンクする.なぜ lha + base64のファイルは 
    MHonArcが処理してくれないのか原因を調査する.
(2) 別紙2のようなファイル中の base64 encode な部分を読み飛ばすように,
    mknmz を改造する?


-------------- 別紙1 ---------------

		(略)
--Multipart_Tue_Jan_20_16:24:11_1998-1
Content-Type: application/octet-stream; type=lha
Content-Disposition: attachment; filename="ank980120.lzh"
Content-Transfer-Encoding: base64

LAAtbGg1LXsCAAB+DAAAsi7ENCACOYdNDQABbGliYW5rLmxpYgUAAOc5AAABvWJ2w0bX++7r
/3avawOBYjh5BQ0K2293OuDCXDXDhrtTm4GH2ruq3hrhKURhoJP3gSwmC2AoMZgMbRkZ7/3/
		(略)

-------------- 別紙2 ---------------

X3NpemVfbW9kaWZ5IHx8IG1heF9wcHgwIDwgMCB8fA0KLy8JCQlwcHkwIDwgMCB8fCBtYXhf
cHB5MCA+PSAobG9uZyl5X3NpemVfbW9kaWZ5IHx8DQovLwkJCXBweTAgPj0gKGxvbmcpeV9z
aXplX21vZGlmeSB8fCBtYXhfcHB5MCA8IDApew0KDQovLyBMSkswMTAgc3RhcnQNCi8vCWlm
KHBweDAgPCAwIHx8IG1heF9wcHgwID49IChsb25nKXhfc2l6ZV9tb2RpZnkgfHwNCi8vCQkJ
cHB4MCA+PSAobG9uZyl4X3NpemVfbW9kaWZ5IHx8IG1heF9wcHgwIDwgMCB8fA0KLy8JCQlw
		(略)

-------------- 別紙3 ---------------
		(略)
+00kitlza0aexomltqnmgyibmurfcelxpwmt37l5cagke41oglyxo2jgpvykkjr8ocvitw2d	1
+01c1ucwqkybk9v5keegsd/wglgblrwxgs0vn4etfas0r1mcwd+0gs0l70zpwoetc9dalods	1
+01umnegivrfdromvkmrxwvfpvjxdhefi3w0+catnj6vai2uwpyl6w5gb46glnzoe74y1vb	1
+02kgseif1zj9m/rnxxbaofxnw9+rl+8qhr61gs/gvz/9cbittp+jxp+tayruz7hxp42axwb	1
+02wnk1z1sfoct3izj64lenvtdkoksj47fcr6izjqlofftkluf+ynqzaxmfnnzejjsf61iw3	1
+033	2
+034	2
+036	2
+03lffni33qanw2wufpydtzu/xgy7w06pg2ra2mp0qi7rwob5yo5ov6+97o/7zr7jt1d3lig	1
+03tufvvsmnp1+jlrnp1sftohnoxcddmrpt5bo8yj5mw+pmrptyeptl6wkbftkfcetplv14j	1
+04b2qtivszkhtpkaod/ltsmb4aevocryichzponyqsaizhtrrc2q2ea3lbjzm9atuklhidb	2
+04dqpafidjtaiyuerpmahrf4aee2fvllb9ibxflnvjvzu9dnfkg2lg0um+scoosuhnhkgur	1
+04e1jrxm0m6wvrudk8dvk9x15wusrvknzclfryxjb9szpqugqwwi9xjbulb9su2gblxcpof	1
+04ndnkrqvtqc1dice1ctdszru/2cxjvu2s0jiekexohewa/snstlxyz/jikg4w8p4yx9mtm	1
		(略)

============================================================
	加藤裕史@ NTTDATA 通信 (株)
	    技術開発本部 マルチメディア技術センタ
	    マルチメディア SI 担当  ドキュメント新サービス
			E-mail: tumibito@xxxxxxxxxxxxxxxxxxx
============================================================