什么会导致zookeeper客户端会话超时

时间:2016-03-01 07:06:30

标签: apache-storm apache-zookeeper

我部署了一个长期运行的Storm拓扑。运行几个小时后,整个拓扑结构都出现了问题。我查看了工作日志,并找到了这些日志。正如它所说,zookeeper客户端会话超时并导致重新连接。我怀疑它与我破碎的拓扑结构有关。现在我试着找出导致客户端超时的原因。

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]

4 个答案:

答案 0 :(得分:1)

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

  

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

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

  

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

这意味着您的ZooKeeper服务器:

  • 无法访问(网络连接已关闭)
  • 死了(所以没有什么东西在监听插座上听)
  • GCing本身已经死亡且无法通信(虽然可能发出了连接超时错误,但我不确定)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:-1)

始终使用2181作为zookeeper连接的端口号,直到您没有配置您的zookeeper !!!

答案 3 :(得分:-1)

我已经在集群模式下使用3个zookeeper服务器和3个Kafka服务器启动了Kafka。所有zookeeper服务器均已成功启动,但是在启动Kafka服务器时,其连接断开,并指出“ Kafka服务器启动期间发生致命错误。准备关闭(kafka.server.kafkaserver)”。在调查过程中,我发现Kafka服务器在18秒后每次都断开连接(这是zookeeper.connection.timeout.ms = 18000默认值),所以我更新了它并解决了问题。