com.dtstack.jlogstash.outputs.core.common.ClickhouseException: ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 225, host: 172.16.8.84, port: 8123; Code: 225, e.displayText() = DB::Exception: ZooKeeper session has been expired. (version 19.14.6.12)
zk会话超时, 一般都是由于zk单机/集群出问题(例如zk服务挂了, zk的压力太大)导致的.
参考上面zookeeper相关的优化.
zk client在与所有server断开连接后(有可能是各种原因), client 会收到 disconnted消息. 当zk server 恢复后, zk client会自动与server连接上, 但是此时会话已失效, client收到 session expired消息. 前一个会话的所有数据均丢失. 接下来你要怎么做, 得看你的程序用途:
如果只是读写, 没有主备机切换情况(就是当一台主机一台备机, 当主机挂机时, zk通知备机成为主机), 那么, 重新new一个会话, 将原来session的树状结构重新建立起来就行了.
如果是主备机切换情况, 那就不能简单的建立 树状结构, 因为这时我们是不知道到底主机是挂掉了, 还是session expired了. 就只能把它当作真的是主机挂机来处理.
ZK所有集群均不可用情况是比较少见的, 但是session expired需要引起重视起来.
一般情况下, 集群中一两台机器的挂机和启动, 我们都不用关心, apache的zk client可以帮我们自动处理这些问题.
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_21383435/article/details/122789773
内容来源于网络,如有侵权,请联系作者删除!