zookeeper配置檔案詳解

wxjzqym發表於2016-07-19

本文主要內容來自於:


配置引數詳解(主要是%ZOOKEEPER_HOME%/conf/zoo.cfg檔案)

引數名

說明

clientPort

客戶端連線server的埠,即對外服務埠,一般設定為2181吧。

dataDir

儲存快照檔案snapshot的目錄。預設情況下,事務日誌也會儲存在這裡。建議同時配置引數dataLogDir, 事務日誌的寫效能直接影響zk效能。

tickTime

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

dataLogDir

事務日誌輸出目錄。儘量給事務日誌的輸出配置單獨的磁碟或是掛載點,這將極大的提升ZK效能。 
(No  system property)

globalOutstandingLimit

最大請求堆積數。預設是1000。ZK執行的時候, 儘管server已經沒有空閒來處理更多的客戶端請求了,但是還是允許客戶端將請求提交到伺服器上來,以提高吞吐效能。當然,為了防止Server記憶體溢位,這個請求堆積數還是需要限制下的。 
(Java system property:zookeeper.globalOutstandingLimit.)

preAllocSize

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

snapCount

每進行snapCount次事務日誌輸出後,觸發一次快照(snapshot), 此時,ZK會生成一個snapshot.*檔案,同時建立一個新的事務日誌檔案log.*。預設是100000.(真正的程式碼實現中,會進行一定的隨機數處理,以避免所有伺服器在同一時間進行快照而影響效能)(Java system property:zookeeper.snapCount)

traceFile

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

maxClientCnxns

單個客戶端與單臺伺服器之間的連線數的限制,是ip級別的,預設是60,如果設定為0,那麼表明不作任何限制。請注意這個限制的使用範圍,僅僅是單臺客戶端機器與單臺ZK伺服器之間的連線數限制,不是針對指定客戶端IP,也不是ZK叢集的連線數限制,也不是單臺ZK對所有客戶端的連線數限制。指定客戶端IP的限制策略,這裡有一個patch,可以嘗試一下:(No Java system property)

clientPortAddress

對於多網路卡的機器,可以為每個IP指定不同的監聽埠。預設情況是所有IP都監聽 clientPort指定的埠。 New in 3.3.0

minSessionTimeoutmaxSessionTimeout

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

fsync.warningthresholdms

事務日誌輸出時,如果呼叫fsync方法超過指定的超時時間,那麼會在日誌中輸出警告資訊。預設是1000ms。(Java system property: fsync.warningthresholdms)New in 3.3.4

autopurge.purgeInterval

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

autopurge.snapRetainCount

這個引數和上面的引數搭配使用,這個引數指定了需要保留的檔案數目。預設是保留3個。(No Java system property) New in 3.4.0

electionAlg

在之前的版本中, 這個引數配置是允許我們選擇leader選舉演算法,但是由於在以後的版本中,只會留下一種“TCP-based version of fast leader election”演算法,所以這個引數目前看來沒有用了,這裡也不詳細展開說了。(No Java system property)

initLimit

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

syncLimit

在執行過程中,Leader負責與ZK叢集中所有機器進行通訊,例如透過一些心跳檢測機制,來檢測機器的存活狀態。如果L發出心跳包在syncLimit之後,還沒有從F那裡收到響應,那麼就認為這個F已經不線上了。注意:不要把這個引數設定得過大,否則可能會掩蓋一些問題。(No Java system property)

leaderServes

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

server.x=[hostname]:nnnnn[:nnnnn]

這裡的x是一個數字,與myid檔案中的id是一致的。右邊可以配置兩個埠,第一個埠用於F和L之間的資料同步和其它通訊,第二個埠用於Leader選舉過程中投票通訊。 
(No Java system property)

group.x=nnnnn[:nnnnn]weight.x=nnnnn

對機器分組和權重設定,可以 (No Java system property)

cnxTimeout

Leader選舉過程中,開啟一次連線的超時時間,預設是5s。(Java system property: zookeeper. cnxTimeout)

zookeeper.DigestAuthenticationProvider
.superDigest

ZK許可權設定相關,具體參見 《 使用super 身份對有許可權的節點進行操作 和 《 ZooKeeper 許可權控制

skipACL

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

forceSync

這個引數確定了是否需要在事務日誌提交的時候呼叫.force來保證資料完全同步到磁碟。(Java system property: zookeeper.forceSync)

jute.maxbuffer

每個節點最量,是預設是1M。這個限制必須在server和client端都進行設定才會生效。(Java system property: jute.maxbuffer)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20801486/viewspace-2122241/,如需轉載,請註明出處,否則將追究法律責任。

相關文章