個(gè)人專(zhuān)題目錄
默認(rèn)配置下對(duì)solr進(jìn)行數(shù)據(jù)插入壓力測(cè)試:
以書(shū)為例 對(duì)書(shū)籍的類(lèi)型,url,名稱(chēng),介紹進(jìn)行索引,其中url及類(lèi)型不進(jìn)行分
采用數(shù)據(jù):
每次從四個(gè)之間隨機(jī)取出一個(gè)。
開(kāi)啟20個(gè)線(xiàn)程 每個(gè)線(xiàn)程插入100次文檔 每次插入都做提交
服務(wù)器資源占用:
每次提交用時(shí)4.5s左右。
且最終由異常拋出:Error opening new searcher. exceeded limit of maxWarmingSearchers=2
原因:
Solr每次提交時(shí),都會(huì)新打開(kāi)一個(gè)searcher,打開(kāi)searcher花費(fèi)時(shí)間可能較長(zhǎng),在這打開(kāi)的過(guò)程中,假如又有新的提交,又會(huì)導(dǎo)致打開(kāi)新searcher, 當(dāng)這些新的searcher(未準(zhǔn)備好的)的數(shù)量超過(guò)SolrConfigXml 中配置maxWarmingSearchers時(shí),就會(huì)報(bào)該錯(cuò)誤。
maxWarmingSearchers配置的是同時(shí)可以存在的、未準(zhǔn)備好的searcher的個(gè)數(shù)。
解決方法有兩種:
1、把maxWarmingSearchers配置大一點(diǎn)。(需要系統(tǒng)有足夠的RAM和CPU等,比較危險(xiǎn))
2、較少提交的頻率(推薦)
修改為100次文檔添加完成后提交:第一次執(zhí)行,時(shí)間為7s左右且有異常拋出
Error opening new searcher. exceeded limit of maxWarmingSearchers=2
第二次執(zhí)行,時(shí)間為4.5s,仍存在異常。
第三次執(zhí)行,時(shí)間為4s 異常消失。
將maxWarmingSearchers修改為4,重啟服務(wù)
執(zhí)行 每個(gè)提交 時(shí)間為3s左右,且無(wú)異常拋出
修改為每次添加完立刻commit執(zhí)行程序查看對(duì)服務(wù)器資源占用情況
此時(shí)資源占用:
峰值接近150% 一般維持在 35% - 50%左右。
每次提交時(shí)間分布于 1 - 3s,且有異常拋出
Error opening new searcher. exceeded limit of maxWarmingSearchers=4, try again later.
維持maxWarmingSearchers=4,將線(xiàn)程數(shù)降為10。線(xiàn)程每插入1000條提交一次,循環(huán)10次:
Cpu 占用維持于 35%-50%之間 內(nèi)存占用在8%左右
分析日志 每次commit 用時(shí)2.5s左右,且運(yùn)行期沒(méi)有異常拋出
進(jìn)行數(shù)據(jù)讀取壓力測(cè)試:
同時(shí)進(jìn)行10個(gè)線(xiàn)程寫(xiě)入,10個(gè)線(xiàn)程查詢(xún),
響應(yīng)很快,查看日志,每次響應(yīng)時(shí)間在20ms左右。
同時(shí)進(jìn)行10個(gè)線(xiàn)程寫(xiě)入,100個(gè)線(xiàn)程查詢(xún),
響應(yīng)很快,查看日志,每次響應(yīng)時(shí)間在25ms左右。
保持當(dāng)前條件,將查詢(xún)線(xiàn)程提高到500
查詢(xún)期間cpu占用瞬時(shí)變大,每次響應(yīng)分布在 200-500ms,峰值出現(xiàn)800s
整個(gè)請(qǐng)求用時(shí)5s左右(http請(qǐng)求的發(fā)送與響應(yīng)時(shí)間也在內(nèi))。
同時(shí)進(jìn)行10個(gè)線(xiàn)程寫(xiě)入,1000個(gè)線(xiàn)程查詢(xún),
此時(shí)服務(wù)器端cpu占用巨大,內(nèi)存尚可,可以看出solr對(duì)cpu依賴(lài)較為嚴(yán)重。
每次查詢(xún)響應(yīng)時(shí)間800ms左右,峰值出現(xiàn)1.5s,較之前有明顯下降約為之前20倍。但無(wú)異常拋出。
模擬一千個(gè)用戶(hù)對(duì)solr進(jìn)行不停地查詢(xún):
服務(wù)器資源占用巨大cpu接近400%,solr查詢(xún)響應(yīng)隨時(shí)間增加而下降,最后穩(wěn)定在800ms左右,偶爾緩存命中出現(xiàn)10ms。
總結(jié)
單solr節(jié)點(diǎn)下數(shù)據(jù)寫(xiě)入應(yīng)該以100-1000(或者更大具體看文檔大小決定)個(gè)文檔提交一次,10線(xiàn)程頻繁寫(xiě)入maxWarmingSearchers=4較為穩(wěn)定。
具體應(yīng)用中,大批量數(shù)據(jù)導(dǎo)入應(yīng)該使用內(nèi)置數(shù)據(jù)導(dǎo)入組件。平時(shí)小批量數(shù)據(jù)添加應(yīng)采用定時(shí)批量添加的方式。
Solr數(shù)據(jù)讀取對(duì)cpu 占用較大,內(nèi)存占用一般,可以嘗試加大緩存,提高緩存命中率,以減少響應(yīng)時(shí)間和服務(wù)器資源占用。
http://www.cnblogs.com/guozk/p/3498831.html 配置定義
http://blog.csdn.net/clj198606061111/article/details/21325239 緩存優(yōu)化