在生產(chǎn)庫安裝SOLR

文章主要來源于對官方文檔的翻譯:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設、湘鄉(xiāng)網(wǎng)站維護、網(wǎng)站推廣。

  1. 壓縮包bin目錄有個install_solr_service.sh腳本,幫助你安裝solr作為一個服務。目前支持CentOS, Debian, Red Hat, SUSE 和 Ubuntu Linux系統(tǒng)。

  2. 為了方便升級,建議將安裝目錄和solr數(shù)據(jù)文件的目錄分開,并且為安裝目錄創(chuàng)建軟連接(這些事情install_solr_service.sh都會為你做,你僅需指定目錄,-i 選項可以指定安裝目錄)。

    假如版本為7.7,并且采用默認安目錄(/opt),軟連接方式如下:

    /opt/solr-7.7.0

    /opt/solr -> /opt/solr-7.7.0

  3. 不建議用root用戶運行solr,所以install_solr_service.sh會為你創(chuàng)建默認用戶solr,用戶solr將是solr系統(tǒng)的啟動者和文件擁有者(可以通過ps -ef|grep java驗證,ls -ls命令也可以驗證solr文件的擁有者)。-u選項可以指定用戶替代默認的solr。

? ?4. 具體安裝步驟(其實安裝只需執(zhí)行這一步,其他都是對這一步的說明)

  • 解壓:? tar xzf solr-7.7.0.tgz solr-7.7.0/bin/install_solr_service.sh --strip-components=2(用root用戶執(zhí)行)

  • 安裝:?sudo bash ./install_solr_service.sh solr-7.7.0.tgz(用root用戶執(zhí)行),該命令等價于sudo bash ./install_solr_service.sh solr-7.7.0.tgz -i /opt -d /var/solr -u solr -s solr -p 8983(-i指定SOLR安裝目錄,-d指定SOLR數(shù)據(jù)目錄,-u指定SOLR系統(tǒng)的啟動和文件所有用戶,-p指定SOLR啟動端口)

? ? 5. 啟動和關閉,重啟命令,查看狀態(tài)

? ? ? ?service solr start?service solr stop?service solr restart?service solr status

? ?6.? 安裝目錄bin下的solr.sh腳本里有默認的數(shù)據(jù)目錄位置等啟動參數(shù)配置,也可以傳遞參數(shù)覆蓋腳本里的配置(如-Dsolr.solr.home=…可以指定數(shù)據(jù)目錄)。但強烈建議使用SOLR系統(tǒng)的配置文件,通常該文件是:/etc/default/solr.in.sh(該文件的目錄可以在執(zhí)行安裝腳本install_solr_service.sh,用-s選項替代默認路徑),里面有所有涉及到的參數(shù)。

? ? 該配置文件至少配置了一下幾項:

????SOLR_PID_DIR="/var/solr"? ??

????SOLR_HOME="/var/solr/data"

????LOG4J_PROPS="/var/solr/log4j2.xml"

????SOLR_LOGS_DIR="/var/solr/logs"? --日志文件目錄

????SOLR_PORT="8983"

? ?7. init.d腳本。將solr安裝為服務(即用install_solr_service.sh安裝),會生成/etc/init.d/solr文件,用于幫助你管理solr服務(即可以用servce solr命令操????????? ?作,該腳本有啟動需要的位置信息,如下(如果采用默認安裝):

????? ?SOLR_INSTALL_DIR=/opt/solr? ?--solr的安裝目錄

????? ?SOLR_ENV=/etc/default/solr.in.sh? ---solr服務的配置文件

????? ?RUNAS=solr? ?---這里指定操作系統(tǒng)用戶名,即solr服務的所屬服務

????????).

? 8. 錯誤日志文件:?/var/solr/logs/solr.log

??

? 9. 調優(yōu)部分

? Dynamic Defaults for ConcurrentMergeScheduler并發(fā)合并調度器的動態(tài)默認值

??Merge Scheduler在solrconfig.xml(每個核心都有該配置文件,/var/solr/data/test_core/conf/solrconfig.xml)配置。Merge Scheduler會啟動多個后臺線 程合并Lucene段(Lucene segments)。

?默認情況下,ConcurrentMergeScheduler.會自動檢測硬盤的類型:

?如果是機械硬盤(rotational disk):?maxThreadCount=1?maxMergeCount=6

?如果是固態(tài)硬盤 (SSD):??maxThreadCount=4 or CPU數(shù)的一半(指分給JVM的CPU,哪個值大就為哪個)。maxMergeCount=maxThreadCount+5

? 在LINUX系統(tǒng)中,系統(tǒng)會自動檢測硬盤類型,即使如此,也不能保證完全檢測正確。其他系統(tǒng)都當機械硬盤處理。所以,這兩個值的默認值是可能存在問題。而且這兩個值對性能影響很大,所以最好手工修正(官方文檔73頁)。

系統(tǒng)自動檢測的數(shù)據(jù)可以通過Metrics API獲取(solr.node:CONTAINER.fs.coreRoot.spins如果true表示是機械硬盤)。

建議: (一)最好在solrconfig.xml配置文件中根據(jù)你用的硬盤指定maxThreadCount和maxMergeCount兩個值。

? ? ? ? ? ? ?例如:?

????????????????<mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler">

????????????????? ? ?<int name="maxMergeCount">9</int>? --該行需自行在solrconfig.xml添加

????????????????? ? ?<int name="maxThreadCount">4</int>? --該行需自行在solrconfig.xml添加

????????????????</mergeScheduler>

? ? ? ? (二)?

????????????Alternatively, the boolean system property lucene.cms.override_spins can be set in the SOLR_OPTS

????????????variable in the include file to override the auto-detected value. Similarily, the system property

????????????lucene.cms.override_core_count can be set to the number of CPU cores to override the auto-detected

????????????processor count.

? ? ? ? ? ? 注釋: 可選擇的方法, 這里說可以在/etc/default/solr.in.sh文件中手動指定CPU數(shù)和硬盤類型。大概添加的內容如下(因為未找到,也未試過,建議用上面的方法):

? ? ? ? ? ? SOLR_OPTS="$SOLR_OPTS -Dsolr.clustering.enabled=true" ---文件已有的內容

????????????SOLR_OPTS="$SOLR_OPTS -Dsolr.lucene.cms.override_spins=true" ---自己添加

????? ? ? ??SOLR_OPTS="$SOLR_OPTS -Dsolr.lucene.cms.override_core_count=2" --自己添加

? ?內存設置和垃圾回收(Memory and GC Settings)--Garbage Collection 垃圾回收

? ? 在/etc/default/solr.in.sh文件設置(默認為512M)

? ??SOLR_JAVA_MEM="-Xms512m -Xmx512m"---默認內容,可以根據(jù)實際情況修改,如改成10G: SOLR_JAVA_MEM="-Xms10g -Xmx10g"

? ? SOLR自帶了一組JAVA 垃圾回收的配置參數(shù),對很多情況都比較合理,但對一些特別的SOLR情況,可能需要調整這些參數(shù),就需要修改GC_TUNE變量在 /etc/default/solr.in.sh文件中。(JVM配置垃圾回收可以問其他人員)

? ?當OutOfMemoryError異常拋出,JVM會調用/opt/solr/bin/oom_solr.sh,這個腳本會發(fā)出kill -9命令,殺掉solr進程。這在SolrCloud mode模式是推薦的??梢钥匆幌略撃_本的內容,明白JVM出現(xiàn)異常后的的動作。

? ?JAVA JVM參數(shù)設置一般原則:

? ?-Xms指定初始化的堆大小 -Xmx指定堆的最大內存大小。當所需內存超過初始內存大小時,堆大小會慢慢自動擴展。

? ?根據(jù)應用實際所用內存,調大初始內存參數(shù)是合理的。因為初始大小較大,只會影響啟動速度(啟動時,初始化內存時慢些),卻可以避免后面的堆擴展,因為程序需要時再擴展,會引起應用等待。

? ? -Xmx的設置更關鍵,因為程序使用的內存超過這個值,對象創(chuàng)建可能會產(chǎn)生錯誤并拋出OutOfMemoryException.設置太大也會是不利的。

? ?當內存使用達到最大值參數(shù)時,垃圾回收機制會回收空閑內存,只有回收嘗試失敗時,才會向應用拋出異常。只要內存參數(shù)設置足夠大時,應用運行就不會出錯,如果頻繁強制內存垃圾回收時,系統(tǒng)運行將變得很慢(As long as the maximum is big enough, your app will run without error, but it may run more slowly if forced garbage collection kicks in frequently)。

? 內存堆越大,內存垃圾回收的時間也越長。更糟糕的是,還會出現(xiàn)隨機停頓,更嚴重的是,系統(tǒng)有時會停頓1分鐘甚至更多。------JAVA開發(fā)人員說JVM回收內存,是自動隔一段時間回收

? 當內存堆使用超過2G時(tow gigabytes)時,將會成為1個問題,即使操作系統(tǒng)還有很多可用內存。

? 如果操作系統(tǒng)資源有于,一般建議開多個JVMS,而不是一個JVM使用很大的內存(當然,可能有些JVM供應商,客制了一些特定的回收機制,能夠處理大內存堆)。

? 不要讓JVM使用操作系統(tǒng)的所有可用內存,因為操作系統(tǒng)會需要緩存文件句柄或做其他工作。盡量避免操作系統(tǒng)交換內存空間到磁盤,這會大大影響性能。

? ?對于讀寫頻繁的SOLR,要給操作系統(tǒng)留足夠多的內存。這個配置臨界值,最好經(jīng)過多次實際的實驗。(1308頁)

??

? ?

本文標題:在生產(chǎn)庫安裝SOLR
文章路徑:http://muchs.cn/article16/ghscgg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、品牌網(wǎng)站設計標簽優(yōu)化、網(wǎng)站制作、用戶體驗網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管