1

従来のマスター/スレーブ モデルから SolrCloud に移行中です。私は Solr 4.4 を使用しており、それぞれ 1 つのレプリカを持つ 2 つのシャードをセットアップしています。私は 3 飼育係のアンサンブルを持っています。すべてのノードは AWS EC2 インスタンスで実行されています。シャードは m1.xlarge 上にあり、zookeeper インスタンスを共有しています (別のボリュームにマウントされています)。各 solr インスタンスには 6 GB のメモリが割り当てられます。

インデックスには約 1,000 万のドキュメントがあります。以前のスタンドアロン モデルでは、クエリの平均は約 100 ミリ秒でした。これまでのところ、SolrCloud クエリの応答はひどいものでした。クエリの応答時間は 1000 ミリ秒を超え、2000 ミリ秒に達することもよくあります。サーバーの追加やネットワークの遅延などによる急増を予想していましたが、この違いには本当に困惑しています。ハードウェアはどちらの場合も似ていますが、SolrCloud ノードのカップルが Zookeeper も共有しているという事実を除きます。m1x.large I/O は高いため、ボトルネックにもなりません。

古いセットアップとのもう 1 つの違いは、負荷分散のために 3 つの Zookeeper 参照を持つ新しい CloudSolrServer クラスを使用していることです。しかし、Solr 管理クエリ パネルから実行されたクエリが遅いことを確認しているため、大きな影響はないと思います。

ここに私の構成セットアップのいくつかがあります:

コミット頻度


<autoCommit> 
        <maxTime>30000</maxTime> 
        <openSearcher>false</openSearcher> 
</autoCommit> 

<autoSoftCommit> 
        <maxTime>1000</maxTime> 
</autoSoftCommit>

ブール節 :

<maxBooleanClauses>1024</maxBooleanClauses> 
キャッシュ設定:


<filterCache class="solr.FastLRUCache" size="16384" initialSize="4096" 
autowarmCount="4096"/> 

<queryResultCache class="solr.LRUCache" size="16384" initialSize="8192" 
autowarmCount="4096"/> 

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

<fieldValueCache class="solr.FastLRUCache" size="16384" 
autowarmCount="8192" showItems="4096" /> 

<enableLazyFieldLoading>true</enableLazyFieldLoading> 

<queryResultWindowSize>200</queryResultWindowSize> 

<queryResultMaxDocsCached>400</queryResultMaxDocsCached> 

クエリ リスナー:


<listener event="newSearcher" class="solr.QuerySenderListener"> 
        <arr name="queries"> 
                <lst><str name="q">line</str></lst> 
                <lst><str name="q">xref</str></lst> 
                <lst><str name="q">draw</str></lst> 
        </arr> 
        </listener> 
                <listener event="firstSearcher" 
class="solr.QuerySenderListener"> 
                        <arr name="queries"> 
                                <lst><str name="q">line</str></lst> 
                                <lst><str name="q">draw</str></lst> 
                                <lst><str name="q">line</str><str 
name="fq">language:english</str></lst> 
                                <lst><str name="q">line</str><str 
name="fq">Source2:documentation</str></lst> 
                                <lst><str name="q">line</str><str 
name="fq">Source2:CloudHelp</str></lst> 
                                <lst><str name="q">draw</str><str 
name="fq">language:english</str></lst> 
                                <lst><str name="q">draw</str><str 
name="fq">Source2:documentation</str></lst> 
                                <lst><str name="q">draw</str><str 
name="fq">Source2:CloudHelp</str></lst> 
                        </arr> 
</listener> 

<maxWarmingSearchers>2</maxWarmingSearchers>

リクエスト ハンドラ:

コード>
<requestHandler name="/cloudhelp" class="solr.SearchHandler">
                <lst name="デフォルト">
                        <str name="echoParams">明示的</str>
                        <float name="tie">0.01</float>
                        <str name="wt">速度</str>
                        <str name="v.template">ブラウズ</str>
                        <文字列
name="v.contentType">text/html;charset=UTF-8</str>
                        <str name="v.layout">レイアウト</str>
                        <str name="v.channel">クラウドヘルプ</str>

                        <str name="defType">edismax</str>
                        <str name="q.alt">*:*</str>
                        <str name="rows">15</str>
                        <文字列
name="fl">id,url,Description,Source2,text,filetype,title,LastUpdateDate,PublishDate,ViewCount,TotalMessageCount,Solution,LastPostAuthor,Author,Duration,AuthorUrl,ThumbnailUrl,TopicId,score</str>
                        <str name="qf">テキスト^1.5 タイトル^2 インデックス用語^.9
キーワード^1.2 ADSKCommandSrch^2 ADSKContextId^1</str>
                        <str name="bq">出典2:CloudHelp^3
ソース 2:youtube^0.85</str>
                        <文字列
name="bf">recip(ms(NOW,PublishDate),3.16e-11,1,1)^2.0</str>
                        <str name="df">テキスト</str>


                        <str name="facet">オン</str>
                        <str name="facet.mincount">1</str>
                        <str name="facet.limit">100</str>
                        <str name="facet.field">言語</str>
                        <str name="facet.field">ソース2</str>
                        <str name="facet.field">ドキュメンテーションブック</str>
                        <str name="facet.field">ADSKProductDisplay</str>
                        <str name="facet.field">聴衆</str>


                        <str name="hl">真</str>
                        <str name="hl.fl">テキスト タイトル</str>
                        <str name="f.text.hl.fragsize">250</str>
                        <str name="f.text.hl.alternateField">ShortDesc</str>


                        <str name="spellcheck">真</str>
                        <str name="spellcheck.dictionary">デフォルト</str>
                        <str name="spellcheck.collat​​e">真</str>
                        <str name="spellcheck.onlyMorePopular">false</str>
                        <str name="spellcheck.extendedResults">false</str>
                        <str name="spellcheck.count">1</str>
                </lst>
                <arr name="last-components">
                        <str>スペルチェック</str>
                </arr>
        </requestHandler>

私が気づいたことの 1 つは、queryresultcache のヒット率が非常に低く、クエリが常に一意であるかどうかわからないことです。私は edismax を使用していますが、 recip(ms(NOW,PublishDate),3.16e-11,1,1)^2.0 があります。これは貢献できますか?

長い投稿で申し訳ありませんが、ここで問題を特定するのに苦労しています。特に、同様のハードウェアとネットワークを備えたマスター/スレーブ環境でクエリが正常に実行されている場合はなおさらです。

どんな指針も高く評価されます。

  • ありがとう
4

1 に答える 1

1

Thanks for note:

only difference being Solrcloud has 4 servers which there was only 1 slave server earlier.

By default SolrCloud distributes the request among active nodes and collates the result. My suggestion is to make use of Document and Query Routing among shard, which will provide optimal performance.

于 2013-10-20T10:25:14.263 に答える