zookeeper 性能问题分析
1、服务启动时,zookeeper 信息
Initiating client connection, connectString=zk-svc:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@508f2f3b
这里的sessionTimeout 是客户端连接zookeeper 服务端的时候,客户端设置 timeout 为 60000
默认是30000
2 建立连接后的协商超时时间 negotiated timeout = 40000
2019-07-26 10:13:58,976 INFO (ClientCnxn.java:1299)- Session establishment complete on server zk-2.zk-svc.incloud.svc.cluster.local/10.233.88.154:2181, sessionid = 0x36c1354aabf0345, negotiated timeout = 40000
这个数出处是 /opt/zookeeper/conf/zoo.cfg 中的 maxSessionTimeout = 40000
zookeeper 默认 ticketTime 是3000,如果没有设置session最大最小时间的话,默认 session最大超时时间为 tickTime 的20倍
icm的zookeeper 容器中设置了心跳时间和session的最大最小值
则 negotiated timeout = 40000
3 zookeeper 日志中大量的ruok
2019-07-25 09:29:11,837 [myid:1] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@883] - Processing ruok command from /127.0.0.1:40006
2019-07-25 09:29:11,837 [myid:1] - INFO [Thread-70950:NIOServerCnxn@1044] - Closed socket connection for client
ruok 这个命令是 测试服务是否处于正确状态。如果确实如此,那么服务返回 imok ,否则不做任何响应。
断开连接是因为没有客户端连接这个端口,检测不到sessonId,就会关闭
*正常的客户端连接服务端的时候,会自动注册sessionId
4、验证 server端强制关闭,再次启动的情况
client情况如下,自动重连
服务端情况
服务端中的 sessionId 保持不变