天天看點

ZooKeeper運維之使用SnapshotFormatter可視化快照資料

在zookeeper的運維過程中,我們經常會碰到這樣的問題,就是快照資料檔案越來越大,但是zookeeper上的資料節點數量并沒有相應的增加。

這說明什麼問題:一定是有用戶端在将zookeeper當資料庫使用了。長此以往,必然會引起zookeeper記憶體資料過大而影響性能及叢集間的資料同步。

那麼有沒有辦法能夠排查此類問題呢?解決方法是有的,我們首先需要使用snapshotformatter可視化快照資料。

資料快照機制是zookeeper用來定時進行記憶體全量資料dump,每次資料快照都會生成磁盤上的一個snapshot檔案,例如:snapshot.300000007。

但是令人沮喪的是,這個檔案是二進制格式的,無法看出任何有意義的資料資訊。

幸好,zookeeper提供給我們一個可視化快照資料的工具:snapshotformatter

使用方法如下:

java snapshotformatter 快照資料檔案

例如我們對上面提到的事務日志對應的快照資料檔案進行可視化轉換:

java snapshotformatter snapshot.300000007

輸出内容如下:

從上面的輸出中,我們就可以看到zookeeper上的所有節點資訊了,其中會看到有個datalength屬性,這個就是該資料節點的資料大小了。排序就可以排查出異常節點了。