我正在從傳統的 主從模型轉換到SolrCloud。我使用的是Solr 4.4,並設置了2個分片,每個分片有1個 副本。我有3個動物園管理員合奏。所有節點都在AWS EC2實例上運行。碎片位於m1.xlarge並共享動物園管理員實例 (安裝在單獨的捲上)。 6 GB內存分配給每個solr 實例。Solrcloud性能問題
我在索引中有大約1000萬個文檔。使用先前的獨立型號 模型,查詢平均在100毫秒左右。目前爲止,SolrCloud查詢響應已有 。查詢響應時間超過1000ms,經常到達 2000ms。由於額外的服務器,網絡延遲等原因,我預計會出現一些波動,但這種差異真的讓人困惑。在這兩種情況下,硬件都是 類似,除了SolrCloud節點的兩個對象共享動物園管理員的事實是 。 m1x.large I/O很高,因此也不應該是 的瓶頸。
與舊設置的另一個區別是,我使用新的 CloudSolrServer類,該類具有3動物園管理員參考,用於加載 平衡。但我不認爲它會產生任何重大影響,因爲從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>
請求處理程序:
code> <requestHandler name="/cloudhelp" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicit</str> <float name="tie">0.01</float> <str name="wt">velocity</str> <str name="v.template">browse</str> <str name="v.contentType">text/html;charset=UTF-8</str> <str name="v.layout">layout</str> <str name="v.channel">cloudhelp</str> <str name="defType">edismax</str> <str name="q.alt">*:*</str> <str name="rows">15</str> <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">text^1.5 title^2 IndexTerm^.9 keywords^1.2 ADSKCommandSrch^2 ADSKContextId^1</str> <str name="bq">Source2:CloudHelp^3 Source2:youtube^0.85</str> <str name="bf">recip(ms(NOW,PublishDate),3.16e-11,1,1)^2.0</str> <str name="df">text</str> <str name="facet">on</str> <str name="facet.mincount">1</str> <str name="facet.limit">100</str> <str name="facet.field">language</str> <str name="facet.field">Source2</str> <str name="facet.field">DocumentationBook</str> <str name="facet.field">ADSKProductDisplay</str> <str name="facet.field">audience</str> <str name="hl">true</str> <str name="hl.fl">text title</str> <str name="f.text.hl.fragsize">250</str> <str name="f.text.hl.alternateField">ShortDesc</str> <str name="spellcheck">true</str> <str name="spellcheck.dictionary">default</str> <str name="spellcheck.collate">true</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>spellcheck</str> </arr> </requestHandler>
有一件事我注意到的是,queryresultcache命中率非常低, 不知道我們的查詢始終是這一獨特。我使用edismax,並有 a recip(ms(NOW,PublishDate),3.16e-11,1,1)^ 2.0,可以 這個貢獻?
對不起,很長的文章,但我很難找到這裏的問題, 特別是當查詢運行良好的主從環境與 類似的硬件和網絡。
任何指針將不勝感激。
- 感謝
是否有任何索引在後臺運行?主/從使用什麼版本?如果您在後臺使用相同的SOLR 4.4而不編制索引,則不應該有重大區別。這是相同的分佈式搜索。 – lexk
@lexk即使沒有索引,性能也不好。對於主從,我使用4.2。這正是我選擇最新版本時的理解,它具有針對Solr Cloud的特定功能和修復程序。而且,硬件規格對於兩種環境都是相同的,唯一不同的是Solrcloud有4臺服務器,而早期只有1臺從服務器。 – Shamik