zookeeper集群管理配置優化總結


1:默認jvm沒有配置Xmx、Xms等信息,可以在conf目錄下創建java.env文件

export JVMFLAGS="-Xms512m -Xmx512m   $JVMFLAGS"

2:log4j配置,由於zk是通過nohup啟動的,會有一個zookeeper.out日志文件,該文件中記錄的是輸出到console的日志。log4j中只要配置輸出到console即可,zookeeper.out日積月累會不斷變大,要放在容量大的磁盤上。

zookeeper.root.logger=INFO, CONSOLE
zookeeper.console.threshold=INFO
log4j.rootLogger=${zookeeper.root.logger}

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold}
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

 3:zoo.cfg文件中,dataDir是存放快照數據的,dataLogDir是存放寫前日志的。這兩個目錄不要配置成一個路徑,要配置到不同的磁盤上。如果磁盤是使用了raid,系統就一塊磁盤,那配置到一塊磁盤上也可以。寫前日志的部分對寫請求的性能影響很大,保證dataLogDir所在磁盤性能良好。

4:zoo.cfg文件中skipACL=yes,忽略ACL驗證,可以減少權限驗證的相關操作,提升一點性能。

5:zoo.cfg文件中forceSync=no,這個對寫請求的性能提升很有幫助,是指每次寫請求的數據都要從pagecache中固化到磁盤上,才算是寫成功返回。當寫請求數量到達一定程度的時候,后續寫請求會等待前面寫請求的forceSync操作,造成一定延時。如果追求低延時的寫請求,配置forceSync=no,數據寫到pagecache后就返回。但是機器斷電的時候,pagecache中的數據有可能丟失。

6:zk的dataDir和dataLogDir路徑下,如果沒有配置zk自動清理,會不斷的新增數據文件。可配置成zk系統自動清理數據文件,但是最求系統最高性能的話,建議人工手動清理文件:zkCleanup.sh -n 3  這樣保留三份文件。

7:查看zk節點狀態。重新啟動zk節點前后,一定要查看狀態

echo ruok | nc host port
echo stat | nc host port

 8:配置fsync.warningthresholdms=20,單位是毫秒,在forceSync=yes的時候,如果數據固化到磁盤的操作fsync超過20ms的時候,將會在zookeeper.out中輸出一條warn日志。這個目前zk的3.4.5和3.5版本有bug,在zoo.cfg中配置不生效。我的做法是在conf/java.env中添加java系統屬性:、

export JVMFLAGS="-Dfsync.warningthresholdms=20 $JVMFLAGS"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM