2012-06-07 70 views
1

我們公司有幾種不同的方式獲取潛在客戶,以及我們處理的幾種類型的潛在客戶。每種鉛類型之間只有很小的差異,許多信息與一種或多種其他鉛類型共享或相關。我和我的團隊正在嘗試使用Solr構建/配置一個索引,該索引處理這些主導類型及其所有共享數據......客戶數據,度假村數據。等等(共約120萬條記錄)。我們目前正在託管一臺Ubuntu服務器(12G內存,8核Opteron),運行Tomcat 6和Solr 3.4。最佳Solr JVM /虛擬/物理內存配置

我希望索引可以在客戶在我們的網站(每天約1500-2000)提交引導式表單時在現場時間添加記錄,以及在員工添加或修改數據時進行更新(大約2500-每天3000次)。

此外,我需要網站上的客戶和家中的員工,以便能夠通過過濾器,構面,自動完成,突出顯示以及人們期望從書面搜索中獲得的所有內容快速搜索這些數據。

此設置目前正在運行,但經常在網站和我們的內部應用程序中掛起更新記錄。提交每1000個文檔或5秒完成一次,每天優化一次。這種設置的最佳JVM,服務器或Solr配置是什麼?任何幫助將不勝感激,我可以根據需要向願意提供幫助的人提供儘可能多的信息。

+0

不是你的問題的完整答覆,但我會做的第一件事是升級到最新的Solr3.6.0,任何你不在最新版本的原因?也可以使用commitWithin批量儘可能多的提交,也許你可以將5秒增加到20或30? – Persimmonium

回答

4

首先,you should not optimize

有兩種常見的配置錯誤回報Solr中的JVM堆大小時:

  • 給予太多的內存給JVM,(操作系統緩存將無法緩存的磁盤操作),
  • 給JVM留下的內存不足(垃圾收集器將面臨很大的壓力,它將被迫運行經常停止的世界集合,使用JMX監視來判斷是否觸發全GC)。

你的應用程序可能掛起的另一個原因是後臺合併。 Lucene基於分段,並且每當分段數量高於mergeFactor時,就會觸發合併。低值mergeFactor可能會解釋掛起。

你應該提供更多的細節您的當前設置,使我們能夠幫助您:

  • JVM大小,
  • 您所使用的收集器(G1,吞吐量收集,併發低暫停收集器,.. 。)
  • 索引大小(在磁盤上,而不是文件數),
  • mergeFactorramBufferSizeMB ...