2010-11-24 19 views
6

私はApache Solrプロジェクトで作業しています。 (クラウド環境で配布 - Amazon ec2インスタンス)Solrのキャッシュ機構についての質問

私はSolrが結果をキャッシュする上で優れた仕事をしていることに気付きました。 同じクエリを再度実行すると、レスポンスはSolr QTime 0または1ミリ秒を示します。

私はSolrシステムをテストしたいと思います。したがって、私は使用できるクエリのリストが限られています(ユニークなクエリは50,000件)。問題は今、すべてのクエリがキャッシュされていることです!

私がストレステストをするとき - 5分後に - 私のすべてのクエリはSolr &で実行されます。 これは、システムが汗をかくのをより重いものにします:)(魔法が目的でした)。 しかし、私は再び同じクエリセットを実行する - QTimeはほぼゼロです! - > Solrは簡単な時間を持っています&は強調されていません。

私の質問: すべてのSolrキャッシュ(SolrキャッシュとLucenceキャッシュの両方)をどのように切り替えることができますか? またはキャッシュをどのように制限できますか?

私はすべてのSolrのインタントキャッシュを無効にしようとしましたが、キャッシュはそのまま残ります。 (QueryResultCacheとFieldCache) 注:設定では、Lucenceが内部キャッシュの管理を行うことに言及しています。おそらくこのキャッシュが問題ですか?

50,000クエリのすべてをキャッシュに保存することができるのは奇妙なことです。

答えて

6

あなたの設定でfilterCache, queryResultCache and documentCacheをコメントアウトすることができます。 Lucene's FieldCache cannot be disabled

ベンチマークの場合でもそうするのは実際には意味がありませんが。また、オペレーティングシステムでディスクキャッシュを無効にしますか? CPUキャッシュ(全3レベル)?各ハードディスクの内部キャッシュ?

キャッシュはシステムの一部です。キャッシュを無効にすると、本番で何が起こるかを正確にシミュレートすることができず、ベンチマークが役に立たなくなります。

+1

+1。 @ user519 ...コメントアウトが役立つかどうか分かりません。 0のサイズに設定してみてください。とにかく:キャッシュをオフにするとベンチマークは役に立たない! – Karussell

+0

私はそれを知っていました。 問題は次のとおりです。 68 000のユニークなクエリ(ログから取得)があります。 しかし、テストでは、5分後にすべてのクエリがシステムに送られ、キャッシングが行われます。 もっと長いテストをしたいのですが、何百万ものクエリが必要ですか? Lucence/Solrキャッシュのクエリの量はどれくらいですか? –

+0

@Karussellは正しいと思います。これはdocページの引用です。「fieldValueCacheがsolrconfig.xmlで宣言されていない場合、初期サイズ10、最大サイズ10000、自動ウォーミングなしで自動的に生成されます。 – JnBrymn

3

キャッシュをオフにすることは、少なくともアプリケーション固有のものです。この場合のベンチマークは、以前には見られなかったクエリの応答/コストを見つけるために収集することを意図しています。キャッシュ内で一般的に使用されているものとは異なります。

検索システムのパフォーマンスを示すメトリックが必要です。クエリキャッシュではありません。

以前の回答は実際にはすべてのベンチマークで同じことを測定する必要があることを示唆しています。それはエンジニアリングの仕組みではありません。

「ディスクキャッシュ」についての発言。 Linuxにはディスクキャッシュはありません。ページキャッシュのみ。そのページがディスク上に永続化されているか、メモリー内に作成または破棄されているか、またはスマートな大規模ファイルシステムの事前割り振りであるかどうかは、すべてページです。

キャッシュのパフォーマンスメトリックを測定するのが面倒な場合は、キャッシュを使用したベンチマークの利点があります。デュ。

ところで、 "-server"と "XXcompileThreshold"の間に、最初の大規模なクエリが十分にランダムであるか、Solr/Luceneでできるだけ多くの関数パスを実行するように特別に選択されていることを確認します。 JITは活発で多少解決しています。