2012-04-10 8 views
0

SOLRを使用して検索するPHP Webアプリケーションがあります。 APPは、CURLを使用してSOLRサーバーに接続しており、何千もの定義済みのキーワードでループを実行しています。これは、特定の時間に何千もの異なる検索クエリをSOLRに作成します。SOLRの問題 - 検索クエリが多すぎます

私の問題は、1人のユーザーがアプリケーションにログインしたときに、すべてが期待どおりに機能しているということです。複数のユーザーがアプリを実行しようとしているとき、私たちはこの応答をサーバーから取得しています。

は、xxx.xxx.xxx.xxxのために接続に失敗しました:XXX.XXX.XXX.XXXに接続するaddressFailed を要求割り当てることはできません: を要求し割り当てることはできません

をaddressFailed当社の仮定はつまり、 SOLRサーバーは、指定された時間に多くの検索クエリを処理できません。もしそうなら、これを克服する解決策は何ですか? SOLRにキープアライブのような設定はありますか?

非常に助かります。

おかげで、

アルンS

+0

各ユーザーのリクエストによってSOLRに1,000件のリクエストが生成されますか?あなたはそのようなサービスを提供するために非常に高いスケーラビリティを必要とします –

+1

1人のユーザーの要求に対して何千ものクエリを連続して実行する必要がある理由を説明してください。アプリケーションを再設計する必要があるかもしれません。その間に、ランダムな障害を緩和する要求(それがあなたのものである場合)の間で、プログラムを75ミリ秒(愚かな経験則!)の間スリープさせてください。 – aitchnyu

+0

上記に同意します。キーワードがあらかじめ定義されていて、その数が多い場合は、スケジュールされたタスク(たとえば1日に1回)としてループを実行し、結果をどこかに保存することをお勧めします。 –

答えて

0

何キーワードのサブセットを論理和(OR)について、ちょうど1クエリを実行しますか?
それでも見つからない場合は、キーワードの次のサブセットを試してみてください。

この特殊なケースでは、トリッキーなことをする必要がある場合でも、SOLRではなくアプリケーションのパフォーマンスを向上させる必要があると思います。

SOLRには最大接続制限はありますか?

これは、使用しているハードウェアとオペレーティングシステム、および使用しているサーブレットコンテナによって大きく異なります。

SOLRのパフォーマンスをさらに向上させる必要がある場合は、スキーマ(詳細についてはここに投稿できます)、垂直販売(RAMディレクトリまたはSSD)、マスター/スレーブ設定を検討する必要があります。