zookeeper session timeout

zookeeper的超时时间由客户端参数和zookeeper server端启动时配置的参数决定的。

1)zk server端timeout参数
tickTime:zk的心跳间隔(heartbeat interval),也是session timeout基本单位。单位为微妙。
minSessionTimeout: 最小超时时间,zk设置的默认值为2*tickTime。
maxSessionTimeout:最大超时时间,zk设置的默认值为20*tickTime。

2)客户端实际超时时间
zookeeper源码:zookeeper-release-3.4.6/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java

** minimum session timeout in milliseconds, -1 if unset */
public int getMinSessionTimeout() { return minSessionTimeout; }

/** maximum session timeout in milliseconds, -1 if unset */
public int getMaxSessionTimeout() { return maxSessionTimeout; }

public int getMinSessionTimeout() {
    return minSessionTimeout == -1 ? tickTime * 2 : minSessionTimeout;
}

public int getMaxSessionTimeout() {
    return maxSessionTimeout == -1 ? tickTime * 20 : maxSessionTimeout;
}
int sessionTimeout = connReq.getTimeOut();
int minSessionTimeout = getMinSessionTimeout();
if (sessionTimeout < minSessionTimeout) {
    sessionTimeout = minSessionTimeout;
}
int maxSessionTimeout = getMaxSessionTimeout();
if (sessionTimeout > maxSessionTimeout) {
    sessionTimeout = maxSessionTimeout;
}
cnxn.setSessionTimeout(sessionTimeout);

connReq.getTimeOut()客户端超时时间实际限制在[2*tickeTime, 20*tickTime]范围内。

此条目发表在hbase分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据