0

1 つの特定のフィールドが非常に重すぎる (DIH を使用して) 重いデータセットのインデックスを作成しようとしています...

ただし、開始すると、メモリの警告とロールバック (OutOfMemoryError) が表示されます。-Xmx1024mそのため、java コマンドでオプションを使用して solr を開始し、ヒープにより多くのメモリを割り当てることができることを学びました。

私の質問は、これも後で不十分になる可能性があるため、キャッシングに関連する問題ですか?

これがsolrconfigの私のキャッシュブロックです:

<filterCache class="solr.FastLRUCache"
                 size="512"
                 initialSize="512"
                 autowarmCount="0"/>

<queryResultCache class="solr.LRUCache"
                     size="512"
                     initialSize="512"
                     autowarmCount="0"/>

<documentCache class="solr.LRUCache"
                   size="512"
                   initialSize="512"
                   autowarmCount="0"/>

「documentClass」のキャッシュをオフにする必要があるのではないかと考えています。誰かがより良いアイデアを得ましたか?それとも、ここに別の問題があるのでしょうか?

お知らせしておきますが、インデックス作成のために非常に重い db フィールドを追加するまでは、すべて問題ありませんでした...

4

1 に答える 1

1

確かに、キャッシュが原因かもしれません。これ以上の情報がなければなんとも言えません。

ただし、いいえ、ドキュメントのキャッシュをオフにしないでください。 documentCache のドキュメントを参照してください

リクエスト中に Solr がドキュメントを再フェッチする必要がないように、documentCache のサイズは常に<max_results>*よりも大きくする必要があります。<max_concurrent_queries>

必要に応じて、キャッシュ設定をいくらか元に戻すことができる場合があります。上記のドキュメントを参照すると、ドキュメントの遅延読み込みに関するアドバイスを受けることができます。

より良いアプローチは次のとおりです。巨大なデータセットをインデックスに格納することはできません。非常に典型的なパターンは、大規模なデータセットにインデックスを付けますが、完全にインデックスの外部に保存し、本当に必要なときに作成した外部データソースからフェッチします。

また、拡張されたデータセットを使用して SOLR インスタンスで実行したいことをサポートするには、1 GB のメモリでは不十分である可能性もあります。

于 2013-06-05T16:28:37.183 に答える