かなり大きな Solr 3.6 インデックスを作成するアプリケーションがあります。毎日 10 コアに分割された 10 億のドキュメントで 300 GB。インデックス作成はうまく機能し、ラウンド ロビン アルゴリズムを使用してドキュメントをコア間で均等に分散しています。返される結果セットが 10 万以上のドキュメントになるまで、検索は私にとってもうまく機能します。
その時点で、次の Java エラーが返されます: OutOfMemoryError または SolrException: parsing error
私の検索は単純で、ワイルドカード、並べ替え、またはファセット検索を使用していませんが、結果セット全体をバッファリングしてから返すようです。サーバーの物理メモリは 256G で、Solaris 10 を実行しています。32 ビットのデフォルトの Java を使用していますが、32 ビットと 64 ビットの Java 7 も試しました。
64 ビットの Java を使用すると、–Xmx オプションを使用して 1M 以上のドキュメントを返すのに十分な最大メモリを増やすことができますが、1 つの Solr プロセスだけで実質的にすべてのメモリが必要になります。
何百もの小さなインデックスを使用してアプリケーションを再設計する以外に、大量の RAM を使用せずに Solr から大規模な検索結果セットを取得する方法について誰か提案がありますか?