zoukankan      html  css  js  c++  java
  • Zookeeper笔记之四字命令

    Zookeeper支持一些命令用来获取服务的状态和相关信息,因为这些命令都是四个字母的,所以一般称为四字命令。

    四字命令可以使用telnet或者nc向服务器提交,使用下面这个脚本可以当做是一个简易的客户端,它接收四字命令,发送到指定服务器,并将执行结果显示在控制台上,同时为了体验好一些,还提供了prompt来将用户输入的命令和命令的执行结果做区分:

    #! /bin/bash
    
    # [$1] server host
    # [$2] server port
    show_prompt(){
    	if [ $# -eq 2 ]; then
    		echo -n "$1:$2> "
    	else 
    		echo -n "> "
    	fi
    }
    
    show_help(){
    	echo 'Usage: '
    	echo '	four-letter-word-cli [server-host] [server-port]'
    	echo '	server-host and server-port default is localhost:2181'
    }
    
    # [$1] server host, default localhost
    # [$2] server port, default 2181
    four_letter_word_client(){
    
    	# 帮助信息
    	if [ "$1" == "-h" ]; then
    		show_help
    		return 0
    	fi
    
    	# 检查参数,若未传递则使用默认值
    	server_host=${1-"localhost"}
    	server_port=${2-2181}
    	
    	# 循环接收命令并执行
    	show_prompt $server_host $server_port
    	while read command
    	do
    		# 支持exit退出,兼容各种大小写情况
    		if [ `echo "foo-$command" | tr A-Z a-z` == "foo-exit" ]; then
    			echo "bye."
    			return 0
    		fi
    
    		echo $command | nc $server_host $server_port
    		show_prompt $server_host $server_port
    	done
    }
    
    # main
    four_letter_word_client $@
    

    效果如下:

     image

    conf

    输出服务相关的配置信息。

    localhost:2181> conf
    clientPort=2181
    dataDir=/tmp/zookeeper/version-2
    dataLogDir=/tmp/zookeeper/version-2
    tickTime=3000
    maxClientCnxns=0
    minSessionTimeout=6000
    maxSessionTimeout=60000
    serverId=0
    

    clientPort:服务监听在哪个端口上了

    dataDir:数据文件的目录

    dataLogDir:日志文件的目录,zk会将所有操作以类似于binlog的形式记录下来

    tickTime:

    maxClientCnxns:最大连接数

    minSessionTimeout:最小session超时时间

    maxSessionTimeout:最大session超时时间

    serverId:

    cons

    列出连接到服务器的客户端的连接信息。

    localhost:2181> cons
     /127.0.0.1:48482[1](queued=0,recved=1,sent=1,sid=0x163206280b2000c,lop=SESS,est=1527335699876,to=30000,lcxid=0x0,lzxid=0x68,lresp=1527335699898,llat=6,minlat=0,avglat=6,maxlat=6)
     /127.0.0.1:48486[0](queued=0,recved=1,sent=0)
    

    /127.0.0.1  ip地址

    :48482  端口

    [1](  连接编号

    queued=0,  所在队列

    recved=1,  接收包数量

    sent=1,  发送包数量

    sid=0x163206280b2000c,  会话id

    lop=SESS,  最后一次进行的操作

    est=1527335699876,  连接时间戳

    to=30000,  超时时间,timeout

    lcxid=0x0,    最后id(未确认具体id)

    lzxid=0x68,    最后id(状态变更id)

    lresp=1527335699898,  最后响应时间戳

    llat=6,  最后/最新延时

    minlat=0,  最小延时

    avglat=6,  平均延时

    maxlat=6)  最大延时

    dump

    列出未经处理的会话和临时节点

    localhost:2181> dump
    SessionTracker dump:
    Session Sets (3):
    0 expire at Sat May 26 19:56:12 CST 2018:
    0 expire at Sat May 26 19:56:21 CST 2018:
    1 expire at Sat May 26 19:56:30 CST 2018:
    	0x163206280b2000c
    ephemeral nodes dump:
    Sessions with Ephemerals (0):
    

    envi

    服务环境相关信息

    Environment:
    zookeeper.version=3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT
    host.name=localhost
    java.version=1.8.0_161
    java.vendor=Oracle Corporation
    java.home=/opt/jdk/jdk1.8.0_161/jre
    java.class.path=/opt/zookeeper/zookeeper-3.4.11/bin/../build/classes:/opt/zookeeper/zookeeper-3.4.11/bin/../build/lib/*.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/jline-0.9.94.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../zookeeper-3.4.11.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../src/java/lib/*.jar:/opt/zookeeper/zookeeper-3.4.11/bin/../conf:.:/opt/jdk/jdk1.8.0_161/lib:/lib:
    java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    java.io.tmpdir=/tmp
    java.compiler=<NA>
    os.name=Linux
    os.arch=amd64
    os.version=3.10.0-514.26.2.el7.x86_64
    user.name=root
    user.home=/root
    user.dir=/opt/zookeeper/zookeeper-3.4.11/bin
    

    上面列出的主要是服务器用到的一些环境变量即其值。

    reqs

    列出未经处理的请求

    ruok

    测试服务器是否处于正确状态,如果是的话返回“imok”,否则的话没有任何回应。

    stat

    关于性能和客户端的连接信息

    imoklocalhost:2181> stat
    Zookeeper version: 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
    Clients:
     /127.0.0.1:49202[0](queued=0,recved=1,sent=0)
     /127.0.0.1:48482[1](queued=0,recved=62,sent=62)
    
    Latency min/avg/max: 0/0/63
    Received: 468342
    Sent: 468348
    Connections: 2
    Outstanding: 0
    Zxid: 0x68
    Mode: standalone
    Node count: 28
    

    wchs

    列出服务器的watch信息

    wchc

    通过session列出服务器的watch信息,输出是一个与watch相关的会话列表

    wchp

    通过路径列出服务器watch信息,输入与session相关的路径

     

    .

  • 相关阅读:
    java面试和笔试大全
    Struts+Spring整合方式
    四、hibernate实体对象,事务管理,锁
    jdbc知识问答
    关于Struts框架简介
    EJB知识问答
    五、hibernate的Session操作, 查询过滤, 缓存利用, 批量处理
    spring IoC编程实例
    Hibernate简介
    简单的MySQL数据库连接例子
  • 原文地址:https://www.cnblogs.com/cc11001100/p/10227024.html
Copyright © 2011-2022 走看看