2015-09-25 90 views
0

的設置
後消失我們有(在每個DC 3)設置組成的6臺服務器一個SolrCloud(Solr的版本4.10.4)羣集分佈在2個數據中心。SolrCloud 15-20分鐘

羣集被設定與3個碎片和2的複製因子並處理一個芯與45M文檔在約每分片100GB平均。有3個Zookeeper實例管理位於6臺服務器中的3臺(第一臺DC中的服務器)上的羣集。

核心駐留在所有碎片一個6Gb/s的SSD驅動器上。 DC內的ping時間在0.3ms的範圍內,而DC間的ping時間在3ms的範圍內。

羣集是設置在Tomcat 7.0.61和Java 7與26GB的所分配的存儲器,同時每個服務器具有可用32GB而每個節點被配置爲接觸所述動物園管理員每30秒。

每個Solr的節點緩存配置如下

<filterCache class="solr.FastLRUCache" 
      size="40000" 
      initialSize="40000" 
      autowarmCount="0"/> 
<queryResultCache class="solr.LRUCache" 
       size="50000" 
       initialSize="20000" 
       autowarmCount="0"/> 
<documentCache class="solr.LRUCache" 
       size="2000000" 
       initialSize="2000000" 
       /> 
<fieldValueCache class="solr.FastLRUCache" 
       size="8" 
       autowarmCount="8" 
       showItems="8" /> 

更重要的是,我們必須執行某些搜索操作的API應用程序頂一下,大多數時候是這樣的:

q=Fragmento+de+retablo+NOT+DATA_PROVIDER%3A%22CER.ES%3A+Red+Digital+de+Colecciones+de+museos+de+Espa%C3%B1a%22& 
rows=12&start=0& 
sort=score+desc& 
timeAllowed=30000&fl=*%2Cscore&facet.mincount=1 

我們使用一個或多個參數對參數進行排序(第二個參數是我們的模式的唯一標識符,但在本例中不是)。

問題
我們的API每秒發送大約5-10查詢集羣上。即使最少數量的請求在一段時間後壓倒了羣集,節點也開始消失,同時觀察到大量的磁盤I/O。我們做一些手工高速緩存預熱約10分鐘,我們讓之前所提供的核心的API,我們注意到,一段時間後(以及集羣的崩潰前)在高速緩存中的命中率是1,但所有的queryResultCache=0.67documentCache=0.9 ,而沒有任何驅逐事件發生。內存消耗約爲88%。

任何想法可能是錯誤的,或我們應該注重將得到高度讚賞。

+0

你檢查你的Solr /動物園管理員日誌?您可能會在此找到有用的信息。 – Yann

+0

嗨,我檢查了solr和zookeeper日誌,它抱怨套接字超時。我還運行了許多不同配置和分析的實驗,似乎GC啓動並暫停整個集羣 –

回答

0

大約88%的內存消耗可以快速跳到100並殺死內核。

這發生在我們身上......尋找核心轉儲文件在各個內核日誌

SolrCloud也容易受到高CPU峯值,可以使的ZooKeeper認爲節點是死了...恢復是緩慢的,有時根本不會發生。

您可以更改的ZooKeeper的默認超時,以防止這種情況的發生。

你可以看到在這個問題上,例如這個bug ......

https://issues.apache.org/jira/browse/SOLR-5565

從您發表評論我看到,你應該可以在超時約2分鐘。

這是以課程的價格 - 嘗試讀了一下,明白它的意思

https://zookeeper.apache.org/doc/r3.1.2/zookeeperStarted.html

+0

嗨,我開始對應用程序進行廣泛的分析,我認爲目前的問題是存在特定的查詢(類似於我提供的),導致次優的深度分頁,最終導致GC暫停,可持續1分鐘。 –

+0

我已經編輯了答案,以嘗試回答你的新評論 –