zookeeper的超时日志分析
java系统启动时总是报异常:
ERROR 2021-05-06 17:43:05,445 [main] org.apache.curator.ConnectionState.checkTimeouts(228) | Connection timed out for connection string (zk1:2181,zk2:2181,zk3:2181) and timeout (3000) / elapsed (3118) org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.curator.ConnectionState.checkTimeouts(ConnectionState.java:225) at org.apache.curator.ConnectionState.getZooKeeper(ConnectionState.java:94) at org.apache.curator.CuratorZookeeperClient.getZooKeeper(CuratorZookeeperClient.java:117) at org.apache.curator.framework.imps.CuratorFrameworkImpl.getZooKeeper(CuratorFrameworkImpl.java:489) at org.apache.curator.framework.imps.GetDataBuilderImpl$4.call(GetDataBuilderImpl.java:310) at org.apache.curator.framework.imps.GetDataBuilderImpl$4.call(GetDataBuilderImpl.java:299) at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:109) at org.apache.curator.framework.imps.GetDataBuilderImpl.pathInForeground(GetDataBuilderImpl.java:296)
查看其源码原理,改变连接状态
栈:
这里的EventThread是一个事件监听线程,有事件才会触发更新连接时间(connectionStartMs)。再查找相关文档说可能是心跳时间>timeout时间。
查看配置是这样的:
client = CuratorFrameworkFactory.builder() .connectString("zk1:2181,zk2:2181,zk3:2181") .sessionTimeoutMs(5000).connectionTimeoutMs(3000) .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build();尝试把配置中的3000改成5000,因为后面重试3次是3000:
client = CuratorFrameworkFactory.builder() .connectString("zk1:2181,zk2:2181,zk3:2181") .sessionTimeoutMs(5000).connectionTimeoutMs(5000) .retryPolicy(new ExponentialBackoffRetry(1000, 3)).build();
再重启几次,问题得到解决。
上面的问题的解决方案2,感觉更好些.
分析日志看引用的是:
<groupId>org.apache.curator</groupId> <artifactId>apache-curator</artifactId> <version>2.8.0</version>
这个org.apache.curator.framework.imps.Backgrounding.inBackground对报错有些影响,看样子包有些老了。加入:
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.2.0</version> <exclusions> <exclusion> <artifactId>zookeeper</artifactId> <groupId>org.apache.zookeeper</groupId> </exclusion> </exclusions> </dependency>相关包已更新:
就这样升一下版本,zookeeper也不报错了。我的zookeeper版本是3.4.5
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑