Zookeeper-配置參數

Zookeeper配置參數

1、clientPort客戶端連接Server端的端口,即Server端對外服務端口,默認爲2181。

2、dataDir:存儲快照snapshot的目錄,默認情況下,事務日誌也會存儲在該目錄下。所以建議配置參數dataLogDir用來存儲事務日誌的快照文件,事務日誌會直接影響zk性能。

3、dataLogDir:事務日誌輸出目錄。儘量給事務日誌的輸出配置單獨的磁盤或是掛載點,這將極大的提升ZK性能。(No Java system property

4、tickTime:ZK中的一個時間單元。ZK中所有時間都是以這個時間單元爲基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTime。

5、globalOutstandingLimit:最大請求堆積數。默認是1000ZK運行的時候, 儘管server已經沒有空閒來處理更多的客戶端請求了,但還是允許客戶端將請求提交到服務器上來,以提高吞吐性能。當然,爲了防止Server內存溢出,這個請求堆積數還是需要限制下的。(Java system property: zookeeper.globalOutstandingLimit.)

6、preAllocSize:預先開闢磁盤空間,用於後續寫入事務日誌。默認是64M,每個事務日誌大小就是64M。如果ZK的快照頻率較大的話,建議適當減小這個參數。(Java system property: zookeeper.preAllocSize)

7、snapCount:每進行snapCount次事務日誌輸出後,觸發一次快照(snapshot), 此時,ZK會生成一個snapshot.*文件,同時創建一個新的事務日誌文件log.*。默認是100000.(真正的代碼實現中,會進行一定的隨機數處理,以避免所有服務器在同一時間進行快照而影響性能)(Java system property: zookeeper.snapCount)

8、traceFile:用於記錄所有請求的log,一般調試過程中可以使用,但是生產環境不建議使用,會嚴重影響性能。(Java system property:? requestTraceFile)

9、maxClientCnxns:單個客戶端與單臺服務器之間的連接數的限制,是ip級別的,默認是60,如果設置爲0,那麼表明不作任何限制。請注意這個限制的使用範圍,僅僅是單臺客戶端機器與單臺ZK服務器之間的連接數限制,不是針對指定客戶端IP,也不是ZK集羣的連接數限制,也不是單臺ZK對所有客戶端的連接數限制。

10、clientPortAddress:對於多網卡的機器,可以爲每個IP指定不同的監聽端口。默認情況是所有IP都監聽 clientPort指定的端口。 New in 3.3.0

11、minSessionTimeout

       maxSessionTimeout:Session超時時間限制,如果客戶端設置的超時時間不在這個範圍,那麼會被強制設置爲最大或最小時間。默認的Session超時時間是在2 * tickTime ~ 20 * tickTime 這個範圍 New in 3.3.0

12、fsync.warningthresholdms:事務日誌輸出時,如果調用fsync方法超過指定的超時時間,那麼會在日誌中輸出警告信息。默認是1000ms。(Java system property: fsync.warningthresholdmsNew in 3.3.4

13、autopurge.purgeInterval:在上文中已經提到,3.4.0及之後版本,ZK提供了自動清理事務日誌和快照文件的功能,這個參數指定了清理頻率,單位是小時,需要配置一個1或更大的整數,默認是0,表示不開啓自動清理功能。(No Java system property) New in 3.4.0 

14、autopurge.snapRetainCount:這個參數和上面的參數搭配使用,這個參數指定了需要保留的文件數目。默認是保留3個。(No Java system property) New in 3.4.0

15、electionAlg:在之前的版本中, 這個參數配置是允許我們選擇leader選舉算法,但是由於在以後的版本中,只會留下一種“TCP-based version of fast leader election”算法,所以這個參數目前看來沒有用了。(No Java system property)

16、initLimit:Follower在啓動過程中,會從Leader同步所有最新數據,然後確定自己能夠對外服務的起始狀態。Leader允許F在 initLimit時間內完成這個工作。通常情況下,我們不用太在意這個參數的設置。如果ZK集羣的數據量確實很大了,F在啓動的時候,從Leader上同步數據的時間也會相應變長,因此在這種情況下,有必要適當調大這個參數了。(No Java system property)

17、syncLimit:在運行過程中,Leader負責與ZK集羣中所有機器進行通信,例如通過一些心跳檢測機制,來檢測機器的存活狀態。如果L發出心跳包在syncLimit之後,還沒有從F那裏收到響應,那麼就認爲這個F已經不在線了。注意:不要把這個參數設置得過大,否則可能會掩蓋一些問題

18、leaderServes:默認情況下,Leader是會接受客戶端連接,並提供正常的讀寫服務。但是,如果你想讓Leader專注於集羣中機器的協調,那麼可以將這個參數設置爲no,這樣一來,會大大提高寫操作的性能。(Java system property: zookeeper. leaderServes)。

19、server.x=[hostname]:nnnnn[:nnnnn]:這裏的x是一個數字,與myid文件中的id是一致的。右邊可以配置兩個端口,第一個端口用於FL之間的數據同步和其它通信,第二個端口用於Leader選舉過程中投票通信。

例如:server.1=hadoop01:2888:3888

則2888用於Leader和flower數據同步和其他通信

3888端口只用leader選舉中投票通信使用

20、group.x=nnnnn[:nnnnn]weight.x=nnnnn:對機器分組和權重設置

21、cnxTimeout:Leader選舉過程中,打開一次連接的超時時間,默認是5s。(Java system property: zookeeper. cnxTimeout)

22、zookeeper.DigestAuthenticationProvider.superDigest:ZK權限設置相關

23、skipACL:對所有客戶端請求都不作ACL檢查。如果之前節點上設置有權限限制,一旦服務器上打開這個開頭,那麼也將失效。(Java system property: zookeeper.skipACL

24、forceSync:這個參數確定了是否需要在事務日誌提交的時候調用 FileChannel.force來保證數據完全同步到磁盤。(Java system property: zookeeper.forceSync)

25、jute.maxbuffer:每個節點最大數據量,是默認是1M。這個限制必須在serverclient端都進行設置纔會生效。(Java system property: jute.maxbuffer)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章