elasticjob任务启动zk连接超时问题解决
版本信息jdk1.8elasticjob 3.0.1spring boot 1.5.22.RELEASE异常信息Caused by: org.apache.shardingsphere.elasticjob.reg.exception.RegException: org.apache.zookeeper.KeeperException$OperationTimeoutException: Keep
·
版本信息
- jdk1.8
- elasticjob 3.0.1
- spring boot 1.5.22.RELEASE
异常信息
Caused by: org.apache.shardingsphere.elasticjob.reg.exception.RegException: org.apache.zookeeper.KeeperException$OperationTimeoutException: KeeperErrorCode = OperationTimeout
原因分析
从异常信息可以看出是zk连接方面出现了问题,优先检查zk配置和zk环境信息。
<elasticjob:zookeeper id="zookeeperRegistryCenter"
server-lists="${dubbo.registry.address}" namespace="test-job"
base-sleep-time-milliseconds="1000"
max-sleep-time-milliseconds="3000" max-retries="0"/>
配置明面上没有问题,但进一步查看elasticjob源码实现,则可以发现问题。
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter
try {
if (!client.blockUntilConnected(zkConfig.getMaxSleepTimeMilliseconds() * zkConfig.getMaxRetries(), TimeUnit.MILLISECONDS)) {
client.close();
throw new KeeperException.OperationTimeoutException();
}
//CHECKSTYLE:OFF
} catch (final Exception ex) {
//CHECKSTYLE:ON
RegExceptionHandler.handleException(ex);
}
zk连接在初始化过程中,对于超时的时长使用了 zkConfig.getMaxSleepTimeMilliseconds() * zkConfig.getMaxRetries()
乘法逻辑,而前面xml配置 max-retries="0"
从而使zk连接无法创建成功。
解决办法
调整elasticjob zookeeper连接配置参数,max-retries
参数设置为大于0的值。
更多推荐
已为社区贡献2条内容
所有评论(0)