什么会导致动物园管理员客户端会话超时



我部署了一个长时间运行的 Storm 拓扑。运行几个小时后,整个拓扑都崩溃了。我检查了工人日志,并找到了这些日志.正如它所说,动物园管理员客户端会话超时并导致重新连接。我怀疑这与我损坏的拓扑有关。现在,我尝试找出可能导致客户端超时的原因。

2016-02-29T10:34:12.386+0800 o.a.s.z.ClientCnxn [INFO] Client session timed out, have not heard from server in 23789ms for sessionid 0x252f862028c0083, closing socket connection and attempting reconnect
2016-02-29T10:34:12.986+0800 o.a.s.c.f.s.ConnectionStateManager [INFO] State change: SUSPENDED
2016-02-29T10:34:13.059+0800 b.s.cluster [WARN] Received event :disconnected::none: with disconnected Zookeeper.
2016-02-29T10:34:13.197+0800 o.a.s.z.ClientCnxn [INFO] Opening socket connection to server zk-3.cloud.mos/172.16.13.147:2181. Will not attempt to authenticate using SASL (unknown error)
2016-02-29T10:34:13.241+0800 o.a.s.z.ClientCnxn [WARN] Session 0x252f862028c0083 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_31]
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716) ~[na:1.8.0_31]
    at org.apache.storm.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) ~[storm-core-0.9.6.jar:0.9.6]
    at org.apache.storm.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081) ~[storm-core-0.9.6.jar:0.9.6]

您的客户端无法再与 ZooKeeper 服务器通信。 发生的第一件事是在协商的会话超时内没有检测信号的答案:

2016-02-29T10:34:12.386+0800 o.a.s.z.ClientCnxn [INFO] 客户端会话超时,在 23789 毫秒内没有收到服务器的会话 ID 0x252f862028c0083,关闭套接字连接并尝试重新连接

然后,当它尝试重新连接时,连接被拒绝:

2016-02-29T10:34:13.241+0800 o.a.s.z.ClientCnxn [WARN] 服务器空值、意外错误、关闭套接字连接并尝试重新连接的会话0x252f862028c0083 java.net.ConnectException: 连接被拒绝

这意味着您的 ZooKeeper 服务器:

  • 无法访问(网络连接断开)
  • 已死(因此没有任何东西在插槽上侦听)
  • 正在 GCing 自己死亡并且无法通信(尽管这可能发出了连接超时错误,但我不确定)

要了解更多信息,您需要检查(Hadoop?)集群上的ZooKeeper服务器日志。

它通过增加 server.properties 中的连接超时来为我工作:

zookeeper.connection.timeout.ms=60000

发生这种情况的一种方式是,如果您启动 zookeeper,然后在终端中断,然后尝试启动 kafka。

为了使用 kafka,您确实应该使用 3 个终端窗口(如果您从 Windows SSH 进入您的实例,则使用 3 个 PuTTY 会话)

Zookeeper 服务器的第一个会话。Kafka 服务器的第二个会话。第三个会话,用于运行 Kafka 命令以执行创建主题等操作。

我已经在集群模式下启动了 Kafka,有 3 个 zookeeper 服务器和 3 个 Kafka 服务器。所有 zookeeper 服务器都已成功启动,但在启动 Kafka 服务器时断开连接,指出"Kafka 服务器启动期间出现致命错误。准备关闭(kafka.server.kafkaserver)"。在调查时,我发现 Kafka 服务器每次在 18 秒后都会断开连接[这是 zookeeper.connection.timeout.ms = 18000 默认值],所以我更新了相同的内容并解决了问题。

始终使用 2181 作为 Zookeeper 连接的端口号,直到您尚未配置 Zookeeper !!

最新更新