[Ludia-users 158] Re: データ投入時にメモリ確保エラー

Back to archive index

kousa****@nttda***** kousa****@nttda*****
2007年 12月 18日 (火) 14:57:38 JST


幸坂です。こんにちは。

1プロセスのメモリ使用量が原因かもしれません。
max_n_index_cacheを小さい数字にすると、
問題が解決する可能性があります。

max_n_index_cacheは1プロセスが開けるインデックス数です。
この値を超えてインデックスオープンを試みると、
LRU方式でインデックスをクローズし(sen_index_close)、
Sennaのメモリを解放します。

以下の内容も参考にしてください。
http://lists.sourceforge.jp/mailman/archives/ludia-users/2007-October/000110
.html
http://lists.sourceforge.jp/mailman/archives/ludia-users/2007-October/000123
.html

> ちなみに、エラー後、以降の処理を再実行すると正常に格納されます。
エラーにより接続が切れて、全てのメモリが解放されたため、
正常に動作していると思われます。

> -----Original Message-----
> From: ludia****@lists***** 
> [mailto:ludia****@lists*****] On Behalf 
> Of sakamoto
> Sent: Tuesday, December 18, 2007 2:02 PM
> To: ludia****@lists*****
> Subject: [Ludia-users 157]データ投入時にメモリ確保エラー
> 
> こんにちは、坂本です。
> 
> Windows上で、次のようなシーケンスで大量にデータ投入を行っています。
> (Ludia1.2+senna1.0.8)
> 
> 1.全文検索インデックス1個を持った表1へデータを順次投入します。
> 2.インデックスサイズが約512MB近くになると、表1への
>   データ投入を終了し、同一の構造を持った表2を作成し、
>   表2へデータ投入を続けます。
> 3.表2もインデックスサイズが約512MB近くになると、次に
>   表3を作成し、表3へデータ投入を続けます。
> 4.このように1表の(1インデックスサイズ)をある程度抑えて、
>   順次表を追加していく形で大量データの投入を試みています。
> 
> ※1インデックスが2GBを超えると、メモリ確保できずにエラーと
>  なる件がありましたが、それを回避するために表を分割しています。
>  また、1インデックスが1GBを超えると更新時の性能が出ない
>  こともあり、切り替えの設定を低めにしています。
> 
> 本処理を実行し続けると、途中で、エラーで落ちます。
> 実際のSQLシーケンスとしては、
>   BEGIN → INSERT (100件程度)→ COMMIT
> を繰り返しています。
> 
> Ludiaログの内容は、次の通りです。
> 
> 2007-10-24 04:40:42 LOG:  pgsenna2: |A| malloc fail 
> (76836502)=00000000 
> (..\lib\inv.c:922) <9617>
> 2007-10-24 04:40:42 ERROR:  pgsenna2: sen_index_upd failed 
> while do_insert 
> (1)
> 2007-10-24 04:40:42 STATEMENT:  INSERT INTO T_CSV_000012 
> (SMGSEQ, PAGENO, 
> DATA) VALUES(502724, 1, '
> 
> Ludia1.3.1でメモリの解放に関する修正を行ったということで、
> これも確認しましたが、同じ場所で、同様に落ちます。
> 
> 2007-10-27 14:09:12 LOG:  pgsenna2: |A| malloc fail 
> (76836502)=00000000 
> (..\lib\inv.c:922) <9619>
> 2007-10-27 14:09:12 ERROR:  pgsenna2: sen_index_update failed 1,0
> 2007-10-27 14:09:12 STATEMENT:  INSERT INTO T_CSV_000012 
> (SMGSEQ, PAGENO, 
> DATA) VALUES(502724, 1, '
> 
> 少なくとも、COMMIT時にメモリも解放されて問題なく動作すると
> 考えているのですが、1APから実行することによる弊害があるのでしょうか。
> 合計は2GBを優に超えています。
> 
> ちなみに、エラー後、以降の処理を再実行すると正常に格納されます。
> 
> 何か考えらること、良い対応方法は無いでしょうか。 
> 
> _______________________________________________
> Ludia-users mailing list
> Ludia****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/ludia-users
> 




Ludia-users メーリングリストの案内
Back to archive index