zookeeper服務(wù)優(yōu)化的一些建議
1.快照文件和事務(wù)日志文件分別掛在不同磁盤。zoo.cfg文件中,dataDir是存放快照數(shù)據(jù)的,dataLogDir是存放事務(wù)日志的。zookeeper更新操作過(guò)程:先寫事務(wù)日志,再寫內(nèi)存,周期性落到磁盤(刷新內(nèi)存到快照文件)。事務(wù)日志的對(duì)寫請(qǐng)求的性能影響很大,保證dataLogDir所在磁盤性能良好、沒(méi)有競(jìng)爭(zhēng)者。
2. 默認(rèn)jvm沒(méi)有配置Xmx、Xms等信息,可以在conf目錄下創(chuàng)建java.env文件(內(nèi)存堆空間一定要小于機(jī)器內(nèi)存,避免使用swap)
export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"
3. 按天出zookeeper日志,避免zookeeper.out文件過(guò)大。
zkEnv.sh
文件日志輸出方式從CONSOLE
改為ROLLINGFILE
;
if [ "x${ZOO_LOG4J_PROP}" = "x" ] then # ZOO_LOG4J_PROP="INFO,CONSOLE" ZOO_LOG4J_PROP="INFO,ROLLINGFILE" fi
conf/log4j.properties設(shè)置為按天生成文件DailyRollingFileAppender
#zookeeper.root.logger=INFO, CONSOLE zookeeper.root.logger=INFO, ROLLINGFIL
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold} log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file} log4j.appender.ROLLINGFILE.DatePattern='.'yyyy-MM-dd # Max log file size of 10MB #log4j.appender.ROLLINGFILE.MaxFileSize=10MB
4. zoo.cfg文件中skipACL=yes
,忽略ACL驗(yàn)證,可以減少權(quán)限驗(yàn)證的相關(guān)操作,提升一點(diǎn)性能。
5. zoo.cfg文件中forceSync=no
,這個(gè)對(duì)寫請(qǐng)求的性能提升很有幫助,是指每次寫請(qǐng)求的數(shù)據(jù)都要從pagecache中固化到磁盤上,才算是寫成功返回。當(dāng)寫請(qǐng)求數(shù)量到達(dá)一定程度的時(shí)候,后續(xù)寫請(qǐng)求會(huì)等待前面寫請(qǐng)求的forceSync操作,造成一定延時(shí)。如果追求低延時(shí)的寫請(qǐng)求,配置forceSync=no,數(shù)據(jù)寫到pagecache后就返回。但是機(jī)器斷電的時(shí)候,pagecache中的數(shù)據(jù)有可能丟失。
默認(rèn)為forceSync=yes,為yes可以設(shè)置fsync.warningthresholdms=50
如果數(shù)據(jù)固化到磁盤的操作fsync超過(guò)50ms的時(shí)候,將會(huì)在zookeeper.out中輸出一條warn日志(forceSync=yes有效)。
6. globalOutstandingLimit=100000
客戶端連接過(guò)多,限制客戶端請(qǐng)求,避免OOM
7. zoo.cfg文件中preAllocSize=64M
日志文件預(yù)分配大小; snapCount=100,000
多少次寫事務(wù),生成一個(gè)快照如果快照生成頻繁可適當(dāng)調(diào)大該參數(shù)。
一般zk的應(yīng)用提倡讀大于寫,性能較好(10:1),存儲(chǔ)元數(shù)據(jù)用來(lái)協(xié)調(diào)分布式數(shù)據(jù)最終一致。寫過(guò)于頻繁使用緩存更好
8. 日志文件自動(dòng)清除(如果追求性能,可手動(dòng)清除)
autopurge.snapRetainCount=3 # The number of snapshots to retain in dataDir autopurge.purgeInterval=24 # Purge task interval in hours Set to "0" to disable auto purge feature
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
談?wù)凥ashmap的容量為什么是2的冪次問(wèn)題
這篇文章主要介紹了談?wù)凥ashmap的容量為什么是2的冪次問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Java實(shí)現(xiàn)的校驗(yàn)銀行卡功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的校驗(yàn)銀行卡功能,結(jié)合完整實(shí)例形式分析了java針對(duì)銀行卡類型、歸屬地等信息的判斷、讀取相關(guān)操作技巧,需要的朋友可以參考下2018-06-06java項(xiàng)目依賴包選擇具體實(shí)現(xiàn)類示例介紹
這篇文章主要為大家介紹了java項(xiàng)目依賴包選擇具體實(shí)現(xiàn)類示例介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Java8新特性之Collectors.joining()實(shí)例詳解
在項(xiàng)目中我們常常要對(duì)list集合的數(shù)據(jù)做一些字符串拼接/處理等相關(guān)操作,下面這篇文章主要給大家介紹了關(guān)于Java8新特性之Collectors.joining()的相關(guān)資料,需要的朋友可以參考下2023-01-01SpringAOP核心對(duì)象的創(chuàng)建圖解
這篇文章主要介紹了SpringAOP核心對(duì)象的創(chuàng)建詳解,通過(guò)使用AOP,我們可以將橫切關(guān)注點(diǎn)(如日志記錄、性能監(jiān)控、事務(wù)管理等)從業(yè)務(wù)邏輯中分離出來(lái),使得代碼更加模塊化、可維護(hù)性更高,需要的朋友可以參考下2023-10-10Java char[]數(shù)組轉(zhuǎn)成String類型詳細(xì)介紹
這篇文章詳細(xì)介紹了Java char[]數(shù)組轉(zhuǎn)成String類型(char to String)的方法,文章中有詳細(xì)的代碼示例,需要的朋友可以參考閱讀2023-04-04