[fess-user 973] Re: 差分クロールでsolrがOutOfMemoryになる

Back to archive index

Shinsuke Sugaya shins****@yahoo*****
2015年 7月 4日 (土) 20:43:39 JST


菅谷です。

クロールするドキュメントの上限を上げて
OOMが発生する場合は状況を確認して、
チューニングしていく必要があります。
商用サポートでは一度にインデックスする
ドキュメント数を調整したり、Solrの
 スキーマを調整したり、OOMが発生する
状況に応じて調整したりしています。

shinsuke



2015年6月28日 21:00 斎藤 <nsait****@msk-w*****>:
> こんにちは。
>
>  2015年4月にフォーラムでも話題が上っていた(http://osdn.jp/projects
> /fess/forums/18580 /36695/)のですが、
> 解決策が見つからず投稿させて頂きました。
>
>  内容等しては同様で、初回のクロール時には問題なくインデックスが登録され
> ているのですが、
> 同一内容(検索対象文書に変更はなし)で再度クロールを行うと、「システム設
> 定」→「サーバー状態」も
> 「無効」となってしまいます。
>
>  fess-server-9.3.3/bin/setenv.shで-Xmx6gとしており、そこそこ増やしたつ
> もりです。
>
>  検索対象となるファイルは、
>  ・フォーマット:doc/docx/xls/xlsx/ppt/txt/pdf
>  ・サイズ   :最大 50MBまで(10MB超のファイルが20%程度含まれておりま
> すが、中身が画像主体です。)
>   webapps/fess/WEB-INF/classes/s2robot_contentlength.diconで
>  52428800Lを指定。
>
>  solr.logには、以下のログが出力された後、同じ内容が繰り返し記録されてい
> ました。
>
>  ちなみに、検索対象フォルダーを変更して、検索対象ファイルを追加する分に
> は、普通に追加
> 出来ている様に思われます。
>
>  何か設定が不足しているのでしょうか?
>  クロールは、
>  ファイルシステムのみで、スレッド数5 間隔10000ミリ秒(10秒)としてい
> ます。
>  インデックスされたドキュメント数=約700ファイル程度
>
>  動作環境:
>   CPU 4コア/8スレッド
>   メモリ 16GB
>   HDD 500GB(空き容量は十分)
>
>
>  2015-06-xx 18:54:48,632 [http-nio-8080-exec-5] ERROR
> org.apache.solr.servlet.SolrDispatchFilter -
> null:java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space
>          at
> org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:793)
>          at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:434)
>          at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
>          at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
>          at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>          at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
>          at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
>          at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
>          at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
>          at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
>          at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
>          at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
>          at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
>          at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
>          at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
>          at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
>          at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
>          at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>          at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>          at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>          at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.OutOfMemoryError: Java heap space
>          at java.util.Arrays.copyOf(Arrays.java:3332)
>          at java.lang.StringCoding.safeTrim(StringCoding.java:89)
>          at java.lang.StringCoding.decode(StringCoding.java:230)
>          at java.lang.String.<init>(String.java:451)
>          at java.lang.String.<init>(String.java:503)
>          at
> org.apache.lucene.codecs.compressing.CompressingStoredFieldsReader.readField(CompressingStoredFieldsReader.java:205)
>          at
> org.apache.lucene.codecs.compressing.CompressingStoredFieldsReader.visitDocument(CompressingStoredFieldsReader.java:369)
>          at
> org.apache.lucene.index.SegmentReader.document(SegmentReader.java:335)
>          at
> org.apache.lucene.index.BaseCompositeReader.document(BaseCompositeReader.java:112)
>          at
> org.apache.lucene.index.IndexReader.document(IndexReader.java:471)
>          at
> org.apache.lucene.document.LazyDocument.getDocument(LazyDocument.java:99)
>          at
> org.apache.lucene.document.LazyDocument.fetchRealValues(LazyDocument.java:109)
>          at
> org.apache.lucene.document.LazyDocument.access$100(LazyDocument.java:40)
>          at
> org.apache.lucene.document.LazyDocument$LazyField.getRealValue(LazyDocument.java:149)
>          at
> org.apache.lucene.document.LazyDocument$LazyField.numericValue(LazyDocument.java:185)
>          at org.apache.solr.schema.TrieField.toObject(TrieField.java:115)
>          at
> org.apache.solr.schema.TrieDateField.toObject(TrieDateField.java:70)
>          at
> org.apache.solr.schema.TrieDateField.toObject(TrieDateField.java:56)
>          at
> org.apache.solr.response.BinaryResponseWriter$Resolver.getValue(BinaryResponseWriter.java:233)
>          at
> org.apache.solr.response.BinaryResponseWriter$Resolver.getDoc(BinaryResponseWriter.java:196)
>          at
> org.apache.solr.response.BinaryResponseWriter$Resolver.writeResultsBody(BinaryResponseWriter.java:156)
>          at
> org.apache.solr.response.BinaryResponseWriter$Resolver.writeResults(BinaryResponseWriter.java:183)
>          at
> org.apache.solr.response.BinaryResponseWriter$Resolver.resolve(BinaryResponseWriter.java:88)
>          at
> org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:158)
>          at
> org.apache.solr.common.util.JavaBinCodec.writeNamedList(JavaBinCodec.java:148)
>          at
> org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:242)
>          at
> org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:153)
>          at
> org.apache.solr.common.util.JavaBinCodec.marshal(JavaBinCodec.java:96)
>          at
> org.apache.solr.response.BinaryResponseWriter.write(BinaryResponseWriter.java:52)
>          at
> org.apache.solr.servlet.SolrDispatchFilter.writeResponse(SolrDispatchFilter.java:758)
>          at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:426)
>          at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
>
>  クロールが完了し、インデックスをDB登録しているんだと思いますが、CPU1
> コアを使い切っている
> 状態で、システム設定画面ではクロールを開始出来る様になっています。
>  恐くてクリック出来ませんが、メモリ消費も5Gを超えており、この状態でク
> リックできるとするのは
> 如何なものなのでしょう?多分落ちますよねw
>
> 以上
>
> _______________________________________________
> Fess-user mailing list
> Fess-****@lists*****
> http://lists.osdn.me/mailman/listinfo/fess-user



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