[fess-user 114] Re: インデックス破損

Back to archive index

Shinsuke Sugaya shins****@yahoo*****
2010年 2月 3日 (水) 12:18:04 JST


菅谷です。

情報をありがとうございます。

原因がわかりました。Solr がメモリ不足になっているようです。
デフォルトで 10 件ずつ Solr に投入していきますが、
その 10 件が大きなものばかりで、Solr 側で
OutOfMemory になるようです。これを考えると、
setenv.bat には今まで通り -Xmx を指定する必要が
あるので、修正しておきます。ありがとうございます。

> メモリ設定後には出ていませんので、ロール設定関係で検索がか
> からないのは、やはり別件という感じですね?

後でロール関連処理も確認してみます。

shinsuke

2010年2月3日12:00 Masayuki Shibata <mshib****@shima*****>:
> 今確認できるのは Catalina.YYYY-MM-DD.log の方です。
> #fess.out の方は前の方が記録されていません。メモリ関係の
> #設定を追加する以前のログがありませんでした。
>
> 以下のメッセージのブロックが昨日時点で頻繁に (たまに最初の
> 2行だけのが出ますが) 出てました。
>
> メモリ設定後には出ていませんので、ロール設定関係で検索がか
> からないのは、やはり別件という感じですね?
>
> ----- catalina.2010-02-02.log 引用ここから -----
> 2010/02/02 13:05:35 org.apache.solr.common.SolrException log
> 致命的: java.lang.OutOfMemoryError: Java heap space
>        at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:232)
>        at java.lang.StringCoding.encode(StringCoding.java:272)
>        at java.lang.String.getBytes(String.java:947)
>        at org.apache.lucene.index.FieldsWriter.writeField(FieldsWriter.java:207)
>        at org.apache.lucene.index.StoredFieldsWriterPerThread.addField
> (StoredFieldsWriterPerThread.java:58)
>        at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument
> (DocFieldProcessorPerThread.java:231)
>        at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:779)
>        at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:762)
>        at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2629)
>        at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:2601)
>        at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:241)
>        at org.apache.solr.update.processor.RunUpdateProcessor.processAdd
> (RunUpdateProcessorFactory.java:61)
>        at org.apache.solr.handler.BinaryUpdateRequestHandler$2.document
> (BinaryUpdateRequestHandler.java:70)
>        at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readIterator
> (JavaBinUpdateRequestCodec.java:121)
>        at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:210)
>        at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$2.readNamedList
> (JavaBinUpdateRequestCodec.java:107)
>        at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:175)
>        at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:101)
>        at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec.unmarshal
> (JavaBinUpdateRequestCodec.java:126)
>        at org.apache.solr.handler.BinaryUpdateRequestHandler.parseAndLoadDocs
> (BinaryUpdateRequestHandler.java:60)
>        at org.apache.solr.handler.BinaryUpdateRequestHandler.access$000
> (BinaryUpdateRequestHandler.java:46)
>        at org.apache.solr.handler.BinaryUpdateRequestHandler$1.load
> (BinaryUpdateRequestHandler.java:52)
>        at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody
> (ContentStreamHandlerBase.java:54)
>        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
>        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
>        at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338)
>        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)
>        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
> (ApplicationFilterChain.java:235)
>        at org.apache.catalina.core.ApplicationFilterChain.doFilter
> (ApplicationFilterChain.java:206)
>        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558)
> ----- catalina.2010-02-02.log 引用ここまで -----
>
>>菅谷です。
>>
>>確認していただきありがとうございます。
>>
>>> やってみましたが OutOfMemory になりました。
>>
>>これがログに記述されたのはfess.outで良いでしょうか?
>>また、OutOfMemory もいくつか種類があるのですが、
>>Heap などが書いてあるログでしょうか?
>>
>>> そちらでは発生していないでしょうから Windows をサーバーにし
>>> たケースでは... ということにはなるのでしょうけど。
>>
>>こちらの環境で、今までのところ Windows でも観測できて
>>いないので、クロールするドキュメントのような気もしています。
>>たとえば、大きなサイズのドキュメントが立て続けに読み込んで
>>ヒープが足りなくなる状況が発生している可能性があるのかも
>>しれないと考えています。これも後で実験してみようと
>>思います。
>>
>>shinsuke
>>
>>2010年2月3日8:50 Masayuki Shibata <mshib****@shima*****>:
>>> 柴田@亀岡市です。
>>>
>>> fess.dicon にご指定のブロックを追加 -Xmx1024m としたもので
>>> やってみましたが OutOfMemory になりました。
>>> #1/31 版には、このブロック自体が記載されていませんでした
>>> #ので追加しました。
>>>
>>> そこで setenv.bat に -Xmx512m を追加、fess.dicon も -Xmx512m
>>> に戻して昨夜クロールをかけて帰宅したところ今朝方見る限りで
>>> は正常に完了したようです。
>>> #ようですと書いたのは、ラベルとロールを設定したクロール先
>>> #だったのですが、検索画面にラベル指定のプルダウンは出てき
>>> #ませんでしたし、ログインして検索かけても何もヒットしなか
>>> #ったので...
>>> #クロール先の分量が少ないケースでロールを設定していないも
>>> #のは昨日検索できましたし、今回インデックスはできているよ
>>> #うなので別件 (ロール関係?) トラブルかも知れません。
>>>
>>> ここしばらくは、ずっと setenv.bat 側 -Xmx1024m でテストして
>>> おりましたので、メモリを振り分けた形になり増やしたことには
>>> なっていませんが...
>>>
>>> 流石に両方とも -Xmx1024m にすると 32bit OS 機だとメモリフル
>>> 搭載に近くなってくるので余裕を見て多めという作戦がとりにくい
>>> ですし、作成するインデックスのサイズなどにメモリ消費量が比例
>>> するなら双方適正なサイズは知りたいところです。
>>>
>>> そちらでは発生していないでしょうから Windows をサーバーにし
>>> たケースでは... ということにはなるのでしょうけど。
>>>
>>>>菅谷です。
>>>>
>>>>1/31 版がどこまでの修正が入っているか、すぐには
>>>>わからないのですが、3.0 ではクロール処理周りを
>>>>スレッドからプロセスに変更しています。そのため、
>>>>Tomcat の setenv.bat での指定は不要になりました。
>>>>
>>>>これにより、クロールの即時停止やJava自体のバグの
>>>>影響回避などが実現できます。
>>>>
>>>>現在の指定はwebapps/fess/WEB-INF/classes/fess.dicon
>>>>で設定します。
>>>>
>>>>    <component name="systemHelper" class="jp.sf.fess.helper.SystemHelper">
>>>>        <property name="crawlerJavaOptions"> new String[] {
>>>>            "-Djava.awt.headless=true", "-server", "-XX:+UseGCOverheadLimit",
>>>>            "-XX:+UseConcMarkSweepGC", "-XX:+CMSIncrementalMode",
>>>>            "-XX:+UseTLAB", "-Dpdfbox.cjk.support=true", "-Xmx512m",
>>>>            "-XX:MaxPermSize=128m" }</property>
>>>>    </component>
>>>>
>>>>上記のmxを変更しても同じようでしたら、OutOfMemoryError の
>>>>ログ部分をいただければ調査したいと思います。あとは、
>>>>ヒープの OutOfMemory であれば、
>>>>
>>>> - catalina.out なら setenv.bat を編集(Tomcatプロセスのメモリ不足)
>>>> - fess.out なら fess.dicon を編集 (クロールプロセスのメモリ不足)
>>>>
>>>>というように切り分けることができるので mx の設定を
>>>>どちらかに記述すると良いと思います。
>>>>
>>>>よろしくお願いいたします。
>>>>
>>>>shinsuke
>>>>
>>>>
>>>>2010年2月2日14:31 Masayuki Shibata <mshib****@shima*****>:
>>>>> 柴田@亀岡市です。
>>>>>
>>>>> 1/31 版スナップショットで題記発生してクロールが止まりました。
>>>>>
>>>>> OutOfMemoryError だそうです。
>>>>>
>>>>> setenv.bat が以前と変わっていたのでちょっと気になっていたの
>>>>> ですが、"-Xmx512m" が見あたらないのは、承知の上での変更です
>>>>> か?
>>>>>
>>>>> _______________________________________________
>>>>> Fess-user mailing list
>>>>> Fess-****@lists*****
>>>>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>>>>
>>>>
>>>>_______________________________________________
>>>>Fess-user mailing list
>>>>Fess-****@lists*****
>>>>http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>>>
>>>
>>> _______________________________________________
>>> Fess-user mailing list
>>> Fess-****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>>
>>
>>_______________________________________________
>>Fess-user mailing list
>>Fess-****@lists*****
>>http://lists.sourceforge.jp/mailman/listinfo/fess-user
>>
>
> ----------
> Shibata, Masayuki
> Manager, Software Development
> Shimadzu Corporation
> Analytical Measuring Instruments Division
> Research & Development Department
> Telephone:  075-823-1441 Japan
> Facsimile:  075-823-1365 Japan
> E-mail: mshib****@shima*****
>
> _______________________________________________
> Fess-user mailing list
> Fess-****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>




Fess-user メーリングリストの案内
Back to archive index