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 >