zookeeper服務優(yōu)化的一些建議
1.快照文件和事務日志文件分別掛在不同磁盤。zoo.cfg文件中,dataDir是存放快照數(shù)據(jù)的,dataLogDir是存放事務日志的。zookeeper更新操作過程:先寫事務日志,再寫內(nèi)存,周期性落到磁盤(刷新內(nèi)存到快照文件)。事務日志的對寫請求的性能影響很大,保證dataLogDir所在磁盤性能良好、沒有競爭者。
2. 默認jvm沒有配置Xmx、Xms等信息,可以在conf目錄下創(chuàng)建java.env文件(內(nèi)存堆空間一定要小于機器內(nèi)存,避免使用swap)
export JVMFLAGS="-Xms2048m -Xmx2048m $JVMFLAGS"
3. 按天出zookeeper日志,避免zookeeper.out文件過大。
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驗證,可以減少權(quán)限驗證的相關(guān)操作,提升一點性能。
5. zoo.cfg文件中forceSync=no,這個對寫請求的性能提升很有幫助,是指每次寫請求的數(shù)據(jù)都要從pagecache中固化到磁盤上,才算是寫成功返回。當寫請求數(shù)量到達一定程度的時候,后續(xù)寫請求會等待前面寫請求的forceSync操作,造成一定延時。如果追求低延時的寫請求,配置forceSync=no,數(shù)據(jù)寫到pagecache后就返回。但是機器斷電的時候,pagecache中的數(shù)據(jù)有可能丟失。
默認為forceSync=yes,為yes可以設(shè)置fsync.warningthresholdms=50 如果數(shù)據(jù)固化到磁盤的操作fsync超過50ms的時候,將會在zookeeper.out中輸出一條warn日志(forceSync=yes有效)。
6. globalOutstandingLimit=100000 客戶端連接過多,限制客戶端請求,避免OOM
7. zoo.cfg文件中preAllocSize=64M 日志文件預分配大小; snapCount=100,000 多少次寫事務,生成一個快照如果快照生成頻繁可適當調(diào)大該參數(shù)。
一般zk的應用提倡讀大于寫,性能較好(10:1),存儲元數(shù)據(jù)用來協(xié)調(diào)分布式數(shù)據(jù)最終一致。寫過于頻繁使用緩存更好
8. 日志文件自動清除(如果追求性能,可手動清除)
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é)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Java this、final等關(guān)鍵字總結(jié)
這篇文章主要對java中this、final等關(guān)鍵字進行了總結(jié),需要的朋友可以參考下2017-04-04
MyBatis傳入多個參數(shù)時parameterType的寫法
這篇文章主要介紹了MyBatis傳入多個參數(shù)時parameterType的寫法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
關(guān)于@PostConstruct、afterPropertiesSet和init-method的執(zhí)行順序
這篇文章主要介紹了關(guān)于@PostConstruct、afterPropertiesSet和init-method的執(zhí)行順序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

