Zookeeper集群的搭建参考:zookeeper单机、集群搭建
配置集群的zoo.cfg的配置:
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
Shell脚本在zookeeper安装根目录的bin/路径下
启动zk : bin/zkServer.sh start
查看ZK服务状态: bin/zkServer.sh status
停止ZK服务: bin/zkServer.sh stop
重启ZK服务: bin/zkServer.sh restart
连接服务器 : bin/zkCli.sh -server 127.0.0.1:2181
[root@hk bin]# ./zkServer.sh
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Usage: ./zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|restart|status|print-cmd}
[root@hk bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
连接服务器: bin/zkCli.sh -server ip:port
连接到服务器之后,会涉及到一些常用的命令:
ZooKeeper -server host:port cmd args
addauth scheme auth
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path
delquota [-n|-b] path
get [-s] [-w] path
getAcl [-s] path
history
listquota path
ls [-s] [-w] [-R] path
ls2 path [watch]
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]]] | [-add serverId=host:port1:port2;port3[,...]] [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
rmr path
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b val path
stat [-w] path
sync path
- ls /
使用 ls 命令来查看某个目录包含的所有文件,例如:
[zk: localhost:2182(CONNECTED) 3] ls /
[admin, brokers, cluster, config, consumers, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
- ls2 /
使用 ls2 命令来查看某个目录包含的所有文件,与ls不同的是它查看到其他一些信息,例如:
已经过期了 建议使用ls -s / 代替
[zk: localhost:2182(CONNECTED) 5] ls2 /
'ls2' has been deprecated. Please use 'ls [-s] path' instead.
[cluster, controller_epoch, brokers, zookeeper, admin, isr_change_notification, consumers, log_dir_event_notification, latest_producer_id_block, config]
cZxid = 0x0
ctime = Thu Jan 01 00:00:00 UTC 1970
mZxid = 0x0
mtime = Thu Jan 01 00:00:00 UTC 1970
pZxid = 0x1d
cversion = 10
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 10
[zk: localhost:2182(CONNECTED) 6] ls -s /
[admin, brokers, cluster, config, consumers, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
cZxid = 0x0 #节点创建的Zxid
ctime = Thu Jan 01 00:00:00 UTC 1970 #节点创建时间
mZxid = 0x0 #节点最新一次更新时的Zxid
mtime = Thu Jan 01 00:00:00 UTC 1970 #节点最新一次更新发生时的时间
pZxid = 0x1d #子节点最后一次被修改的zxid
cversion = 10 #其子节点的更新次数
dataVersion = 0 #节点数据的更新次数
aclVersion = 0 #节点ACL授权的更新次数
ephemeralOwner = 0x0 #如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是ephemeral节点, ephemeralOwner值为0. 至于什么是ephemeral节点, 请看后面的讲述.
dataLength = 0 #节点数据的字节数
numChildren = 10 #子节点的个数
zxid:致使ZooKeeper节点状态改变的每一个操作都将使节点接收到一个递增的事务id号,并且这个时间戳全局有序。
也就是说,每个对节点的改变都将产生一个唯一的Zxid。如果Zxid1的值小于Zxid2的值,那么Zxid1所对应的事件发生在Zxid2所对应的事件之前。
实际上,ZooKeeper的每个节点维护者三个Zxid值,为别为:cZxid、mZxid、pZxid。
- stat /
查看节点状态属性,不包含节点数据信息,例如:
[zk: localhost:2182(CONNECTED) 9] stat /
cZxid = 0x0
ctime = Thu Jan 01 00:00:00 UTC 1970
mZxid = 0x0
mtime = Thu Jan 01 00:00:00 UTC 1970
pZxid = 0x1d
cversion = 10
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 10
查看某一个具体的节点
[zk: localhost:2181(CONNECTED) 23] stat /test
cZxid = 0x100000004
ctime = Thu Jun 27 03:49:55 UTC 2019
mZxid = 0x100000007
mtime = Thu Jun 27 04:27:08 UTC 2019
pZxid = 0x100000004
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
- create
创建znode,并设置初始内容, 默认内容也可以是空串,附加参数 :-s:顺序节点 ,-e:临时节点 例如:
[zk: localhost:2181(CONNECTED) 1] create /test 'test'
Created /test
[zk: localhost:2181(CONNECTED) 2] ls /
[admin, brokers, cluster, config, consumers, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, test, zookeeper]
[zk: localhost:2181(CONNECTED) 3] create /test2 'test2'
Created /test2
[zk: localhost:2181(CONNECTED) 4] ls /
[admin, brokers, cluster, config, consumers, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, test, test2, zookeeper]
- get
获取znode节点数据,例如:
[zk: localhost:2181(CONNECTED) 5] get /test
test
- set
修改znode节点内容,修改数据也可携带版本号,修改的时候要么不携带版本号,要么携带的版本号要跟dataVersion的版本号一致,否则就会报错(新版本的不会报错
),例如:
[zk: localhost:2181(CONNECTED) 6] stat /test
cZxid = 0x100000004
ctime = Thu Jun 27 03:49:55 UTC 2019
mZxid = 0x100000009
mtime = Thu Jun 27 04:29:26 UTC 2019
pZxid = 0x100000004
cversion = 0
dataVersion = 4
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
[zk: localhost:2181(CONNECTED) 7] set /test 'update_test5' 5
[zk: localhost:2181(CONNECTED) 8] stat /test
cZxid = 0x100000004
ctime = Thu Jun 27 03:49:55 UTC 2019
mZxid = 0x10000000c
mtime = Thu Jun 27 04:32:49 UTC 2019
pZxid = 0x100000004
cversion = 0
dataVersion = 5
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
[zk: localhost:2181(CONNECTED) 9] set /test 'update_test5' 7
[zk: localhost:2181(CONNECTED) 10] stat /test
cZxid = 0x100000004
ctime = Thu Jun 27 03:49:55 UTC 2019
mZxid = 0x10000000d
mtime = Thu Jun 27 04:32:59 UTC 2019
pZxid = 0x100000004
cversion = 0
dataVersion = 6
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 0
- delete
删除没有子节点的节点,如果有子节点将报Node not empty: /test
[zk: localhost:2181(CONNECTED) 11] delete /test3
Node does not exist: /test3
[zk: localhost:2181(CONNECTED) 12] delete /test
[zk: localhost:2181(CONNECTED) 13] ls /
[admin, brokers, cluster, config, consumers, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, test2, zookeeper]
- rmr
已过时的方法,推荐使用deleteall
删除节点,有子节点一并删除
- deleteall
删除节点,有子节点一并删除
[zk: localhost:2181(CONNECTED) 26] ls /
[admin, brokers, cluster, config, consumers, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, test2, zookeeper]
[zk: localhost:2181(CONNECTED) 27] ls /test2
[test22]
[zk: localhost:2181(CONNECTED) 28] delete /test2
Node not empty: /test2
[zk: localhost:2181(CONNECTED) 29] deleteall /test2
- setquota
配额,给节点限制值,比如限制子节点个数、节点数据的长度
-n:限制子节点个数
-b:限制值的长度
[zk: localhost:2181(CONNECTED) 30] create /test
Created /test
[zk: localhost:2181(CONNECTED) 31] setquota -n 2 /test
[zk: localhost:2181(CONNECTED) 32] create /test/test1
Created /test/test1
[zk: localhost:2181(CONNECTED) 33] create /test/test2
Created /test/test2
[zk: localhost:2181(CONNECTED) 34] create /test/test3
Created /test/test3
[zk: localhost:2181(CONNECTED) 35] create /test/test4
Created /test/test4
当创建节点超出配额时,zookeeper不会抛出异常,会在home/zookeeper/apache-zookeeper-3.5.5-bin-02/logs/zookeeper-root-server-hk.out记录警告信息:
2019-06-27 04:42:44,964 [myid:2] - WARN [CommitProcWorkThread-1:DataTree@340] - Quota exceeded: /test count=3 limit=2
2019-06-27 04:42:47,571 [myid:2] - WARN [CommitProcWorkThread-1:DataTree@340] - Quota exceeded: /test count=4 limit=2
2019-06-27 04:42:50,079 [myid:2] - WARN [CommitProcWorkThread-1:DataTree@340] - Quota exceeded: /test count=5 limit=2
- listquota: 查看配额,以及节点的配额状态,例如:
[zk: localhost:2181(CONNECTED) 36] listquota /test
absolute path is /zookeeper/quota/test/zookeeper_limits
Output quota for /test count=2,bytes=-1
Output stat for /test count=5,bytes=0
- delquota:删除配额
[zk: localhost:2181(CONNECTED) 41] delquota /zookeeper
[zk: localhost:2181(CONNECTED) 42] listquota /zookeeper
absolute path is /zookeeper/quota/zookeeper/zookeeper_limits
quota for /zookeeper does not exist.
- close:关闭当前连接
- history:查看历史执行指令
- redo命令
再次执行某命令
如redo 10
其中10为命令ID,需与history配合使用。
- sync:
由于请求在半数以上的zk server上生效就表示此请求生效,那么就会有一些zk server上的数据是旧的。sync命令就是强制同步所有的更新操作
16.printwatches
在获取节点数据、子节点列表等操作时,都可以添加watch参数监听节点的变化,从而节点数据更改、子节点列表变更时收到通知,并输出到控制台。默认是打开,可以设置参数将其关闭。 例如:
zk可以通过它自身提供的简写命令来和服务器进行交互,需要使用到nc命令.
运维四字命令
zk可以通过它自身提供的简写命令来和服务器进行交互,需要使用到nc命令.
安装命令:
yum install nc
使用echo conf |nc 127.0.0.1 2181 查看zookeeper配置信息,报如下异常:
conf is not executed because it is not in the whitelist.
解决办法,修改 conf/zoo.cfg 添加以下属性
开启四字命令:
4lw.commands.whitelist=*
常用的命令:
- conf
conf命令用于输出 ZooKeeper服务器运行时使用的基本配置信息,包括clientPort、dataDir和tickTime等,以便运维人员能快速查看 ZooKeeper当前运行时的一些参数,如上图所示。注意,conf命令输出的配置信息仅仅是输出一些最基本的配置参数。
另外,conf命令会根据当前的运行模式来决定输出的信息。上图所示的输出信息是针对集群模式下的样例,如果是单机模式(standalone),就不会输出诸如initLimit、syncLimit、electionAlg和electionPort等集群相关的配置信息。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
conf
clientPort=2181
secureClientPort=-1
dataDir=/data/zookeeper/zkdata/version-2
dataDirSize=201326640
dataLogDir=/data/zookeeper/zkdatalog/version-2
dataLogSize=2711
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=1
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3881
quorumPort=2881
peerType=0
membership:
server.1=localhost:2881:3881:participant
server.2=localhost:2882:3882:participant
server.3=localhost:2883:3883:participant
version=0Connection closed by foreign host.
- cons
cons命令用于输出当前这台服务器上所有客户端连接的详细信息,包括每个客户端的客户端IP、会话ID和最后一次与服务器交互的操作类型等。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
cons
/127.0.0.1:48966[1](queued=0,recved=3,sent=3,sid=0x10037c3d8980000,lop=PING,est=1562564308212,to=30000,lcxid=0x0,lzxid=0xffffffffffffffff,lresp=936839032,llat=0,minlat=0,avglat=7,maxlat=22)
/0:0:0:0:0:0:0:1:43678[0](queued=0,recved=1,sent=0)
Connection closed by foreign host.
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
cons
/0:0:0:0:0:0:0:1:43708[0](queued=0,recved=1,sent=0)
/127.0.0.1:48966[1](queued=0,recved=13,sent=13,sid=0x10037c3d8980000,lop=PING,est=1562564308212,to=30000,lcxid=0x0,lzxid=0xffffffffffffffff,lresp=936939190,llat=0,minlat=0,avglat=1,maxlat=22)
Connection closed by foreign host.
- crst
crst命令是一个功能性命令,用于重置所有的客户端连接统计消息
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
crst
Connection stats reset.
Connection closed by foreign host.
- dump
dump命令用于输出当前集群的所有会话信息,包括这些会话的会话ID,以及每个会话创建的临时节点等信息。如果在Leader服务器上执行该命令的话,我们还能够看到每个会话的超时时间。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
dump
SessionTracker dump:
Global Sessions(1):
0x10037c3d8980000 30000ms
ephemeral nodes dump:
Sessions with Ephemerals (0):
Connections dump:
Connections Sets (3)/(2):
0 expire at Mon Jul 08 05:45:59 UTC 2019:
1 expire at Mon Jul 08 05:46:09 UTC 2019:
ip: /0:0:0:0:0:0:0:1:43830 sessionId: 0x0
1 expire at Mon Jul 08 05:46:19 UTC 2019:
ip: /127.0.0.1:48966 sessionId: 0x10037c3d8980000
Connection closed by foreign host.
- envi
envi命令用于输出 ZooKeeper所在服务器运行时的环境信息,包括os.version、java.version和user.home等。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
envi
Environment:
zookeeper.version=3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653, built on 05/03/2019 12:07 GMT
host.name=hk.asia-east2-a.c.dulcet-equinox-235605.internal
java.version=1.8.0_211
java.vendor=Oracle Corporation
java.home=/usr/jdk1.8/jdk1.8.0_211/jre
java.class.path=/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/target/classes:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../build/classes:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/target/lib/*.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../build/lib/*.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/zookeeper-jute-3.5.5.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/zookeeper-3.5.5.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/slf4j-log4j12-1.7.25.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/slf4j-api-1.7.25.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/netty-all-4.1.29.Final.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/log4j-1.2.17.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/json-simple-1.1.1.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jline-2.11.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-util-9.4.17.v20190418.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-servlet-9.4.17.v20190418.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-server-9.4.17.v20190418.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-security-9.4.17.v20190418.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-io-9.4.17.v20190418.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jetty-http-9.4.17.v20190418.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jackson-databind-2.9.8.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jackson-core-2.9.8.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/jackson-annotations-2.9.0.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/commons-cli-1.2.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../lib/audience-annotations-0.5.0.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../zookeeper-*.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/home/zookeeper/apache-zookeeper-3.5.5-bin/bin/../conf:.:/usr/jdk/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=5.0.9-1.el7.elrepo.x86_64
user.name=root
user.home=/root
user.dir=/home/zookeeper/apache-zookeeper-3.5.5-bin/bin
os.memory.free=40MB
os.memory.max=966MB
os.memory.total=56MB
Connection closed by foreign host.
- ruok
ruok命令用于输出当前 ZooKeeper服务器是否正在运行。该命令的名字非常有趣,其协议正好是“Are you ok”。执行该命令后,如果当前 ZooKeeper服务器正在运行,那么返回“imok”,否则没有任何响应输出。
请注意,ruok命令的输出仅仅只能表明当前服务器是否正在运行,准确的讲,只能说明2181端口打开着,同时四字命令执行流程正常,但是不能代表 ZooKeeper服务器是否运行正常。在很多时候,如果当前服务器无法正常处理客户端的读写请求,甚至已经无法和集群中的其他机器进行通信,ruok命令依然返回“imok”。因此,一般来说,该命令并不是一个特别有用的命令,他不能反映 ZooKeeper服务器的工作状态,想要更可靠的获取更多 ZooKeeper运行状态信息,可以使用下面马上要讲到的stat命令。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
ruok
imokConnection closed by foreign host.
- stat
stat命令用于获取 ZooKeeper服务器的运行时状态信息,包括基本的 ZooKeeper版本、打包信息、运行时角色、集群数据节点个数等消息,另外还会将当前服务器的客户端连接信息打印出来。
除了一些基本的状态信息外,stat命令还会输出一些服务器的统计信息,包括延迟情况、收到请求数和返回的响应数等。注意,所有这些统计数据都可以通过srst命令进行重置。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
stat
Zookeeper version: 3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653, built on 05/03/2019 12:07 GMT
Clients:
/0:0:0:0:0:0:0:1:44020[0](queued=0,recved=1,sent=0)
/127.0.0.1:48966[1](queued=0,recved=49,sent=49)
Latency min/avg/max: 0/0/22
Received: 102
Sent: 101
Connections: 2
Outstanding: 0
Zxid: 0x300000001
Mode: follower
Node count: 140
Connection closed by foreign host.
- srvr
srvr命令和stat命令的功能一致,唯一的区别是srvr不会将客户端的连接情况输出,仅仅输出服务器的自身信息
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
srvr
Zookeeper version: 3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653, built on 05/03/2019 12:07 GMT
Latency min/avg/max: 0/0/22
Received: 319
Sent: 318
Connections: 2
Outstanding: 0
Zxid: 0x300000001
Mode: follower
Node count: 140
Connection closed by foreign host.
- srst
stst命令是一个功能行命令,用于重置所有服务器的统计信息。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
stst
Connection closed by foreign host.
- wchs
wchs命令用于输出当前服务器上管理的Watcher的概要信息。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
wchs
0 connections watching 0 paths
Total watches:0
Connection closed by foreign host.
- wchc
wchc命令用于输出当前服务器上管理的Watcher的详细信息,以会话为单位进行归组,同时列出被该会话注册了Watcher的节点路径。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
wchc
Connection closed by foreign host.
- wchp
wchp命令和wchc命令非常类似,也是用于输出当前服务器上管理的Watcher的详细信息,不同点在于wchp命令的输出信息以节点路径为单位进行归组。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
wchp
Connection closed by foreign host.
- mntr
mntr命令用于输出比stat命令更为详尽的服务器统计信息,包括请求处理的延迟情况,服务器内存数据库大小和集群的数据同步情况。在输出结果中,每一行都是一个key-value的键值对,运维人员可以,根据这些输出信息进行 ZooKeeper的运行时状态监控。
如果在Leader服务器上执行该命令的话,可以获取比Follower服务器更多的信息。
[root@hk bin]# telnet localhost 2181
Trying ::1...
Connected to localhost.
Escape character is '^]'.
mntr
zk_version 3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653, built on 05/03/2019 12:07 GMT
zk_avg_latency 0
zk_max_latency 22
zk_min_latency 0
zk_packets_received 343
zk_packets_sent 342
zk_num_alive_connections 2
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count 140
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 10402
zk_open_file_descriptor_count 51
zk_max_file_descriptor_count 4096
Connection closed by foreign host.