Lucene Solr - 不同模式文件的多核與多實例
我有性能問題並想要最適合
Multi Core
或Multi Instance(with different port)
?我的案例第一:
- 目前我正在執行具有多個核心的 Solr,並且執行正常。只有一個問題有時會引發“處理方面欄位時堆記憶體不足”,之後我必須重新啟動 solr。(為了盡量減少重啟次數,我用高記憶體啟動 Solr:java -Xms1000M -Xmx8000M -jar start.jar)
- 我有 8core-2.8GHtz /15GB Ram 的亞馬遜 EC2 實例和優化的硬碟。
- 我有很多數據庫表(大約 100 個)並且必須為每個表創建不同的模式(導致創建不同的核心)。
- 每個表都有數百萬個文件,每個文件有 7-9 個索引欄位和 10-50 個儲存欄位。
- 我的門戶網站應該處理非常高的流量(目前我每秒有 10 個請求,可能會增加到 50-100/秒)。我知道“Solr”可以解決這個問題,但這只是為了通知您,我擔心每一個最小的性能問題
- 通過 PHP 和 CURL 搜尋 Solr 到特定的核心,所以在不同的 Solr 實例上搜尋也沒有問題。
題:
據我所知**,Solr 一次處理一個請求**。所以我認為如果我創建多個 solr 實例並在不同的埠啟動它們,那麼我的門戶網站可以一次處理更多請求。(如果使用者在不同的表中搜尋)。
那麼,你會建議我什麼?單個 Solr 實例中的多核?還是每個具有單/雙核的多個實例?
在不同的埠上執行多個 Solr 實例有什麼問題嗎?
*注意:*在這裡,我可以/可能/將在一個實例中結合較少搜尋的核心/小核心和在單獨實例中的大流量核心或兩三重流量- core in one-instance etc. Coz,為每個表創建不同的實例(這里約 100 個)會佔用太多的硬體資源。
Solr 可以一次處理多個請求。
我已經通過執行一個長查詢 [qTime=7203, 大約。7sec] 和幾個小查詢 - 在長查詢 [qTime=30] 之後,Solr 首先響應較小的查詢,即使它們在長查詢之後執行。
**這一點給出了很多答案:**使用具有多個核心的單個 solr 實例。只需將高記憶體分配給 JVM。
其他要點:
**1.**每個 solr 實例都需要 RAM,因此執行多個實例需要更多資源,這將是昂貴的。如果您正在使用
facets
,sort fields
那麼您需要為每個實例分配更多的 RAM。正如你在我的例子中看到的,我需要用高記憶體(8GB)啟動 solr。您可以看到丹麥 Web Archive的案例,它使用多個實例並為每個實例分配 9GB RAM,累積總 RAM 為 256GM。
2.您可以使用命令在不同的PORTS上執行多個solr實例
java -Djetty.port=8984 -jar start.jar
。一切正常,但我遇到了一個問題。在編制索引時,它可能會給出**“記憶體不足錯誤”**,然後 solr 實例將被殺死。因此,您需要啟動具有高記憶體的第二個實例,這將導致更多的 RAM 需求。
3. Solr資源需求和性能問題可以在這裡理解。根據這個 64 位環境,建議使用 12GB RAM 以獲得良好的性能。Solr 優化在這裡解釋。