web-dev-qa-db-ja.com

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]
8
gzc

クライアントはZooKeeperサーバーと通信できなくなります。最初に発生したのは、ネゴシエートされたセッションタイムアウト内にハートビートに対する応答がなかったことです。

2016-02-29T10:34:12.386 + 0800 o.a.s.z.ClientCnxn [情報]クライアントセッションがタイムアウトし、セッションID 0x252f862028c0083の23789msでサーバーからの応答がなく、ソケット接続を閉じて再接続を試みています

次に、再接続しようとすると、接続が拒否されました。

2016-02-29T10:34:13.241 + 0800 o.a.s.z.ClientCnxn [警告]サーバーnullのセッション0x252f862028c0083、予期しないエラー、ソケット接続のクローズと再接続の試行Java.net.ConnectException:接続が拒否されました

これは、ZooKeeperサーバーのいずれかを意味します。

  • 到達できません(ネットワーク接続がダウンしています)
  • 死んでいる(ソケットで何もリッスンしていない)
  • GC自体が停止し、通信できません(接続タイムアウトエラーが発生した可能性がありますが、よくわかりません)

詳細を確認するには、(Hadoop?)クラスターのZooKeeperサーバーログを確認する必要があります。

3
Martin Serrano