更新时间:2022-12-14 GMT+08:00

配置ZooKeeper响应超时时间

配置场景

ZooKeeper客户端使用FIFO队列向服务器发送请求并等待服务器响应。在确认服务器端对请求的响应之前,客户端会一直维持该FIFO队列。在确认到服务器传来的响应之前,客户端会无限等待下去。若由于服务器或网络故障导致客户端无法收到响应,则其会陷入挂起状态。因此,为避免等待时间无限延长,客户端需要关联ACK响应超时。

图1 请求超时逻辑

配置描述

根据自身的网络延迟调整“zookeeper.request.timeout”的值。如果认为判定数据丢包所需的时长大于其默认值“120000毫秒”,则可增加该值。如果要将“zookeeper.request.timeout”的值设为X,在ZooKeeper客户端启动时传入以下系统属性:-Dzookeeper.request.timeout=X。

表1 响应超时时间配置参数

参数

系统参数

描述

默认值

zookeeper.request.timeout

zookeeper.request.timeout

如果在配置的时间内没有收到服务器的响应,则通过org.apache.zookeeper.KeeperException.ConnectionLossException终止未响应的请求并跳出。单位:毫秒。

120000

操作步骤

  1. 以客户端安装用户,登录安装客户端的节点。
  2. 执行以下命令,进入客户端安装路径。

    cd /opt/client

  3. 执行以下命令编辑component_env文件。

    vi ZooKeeper/component_env

    修改“zookeeper.request.timeout”的参数值。

    -Dzookeeper.request.timeout=120000

  4. 执行:wq命令保存。
  5. 重启客户端使配置生效。