logging - ZooKeeper sigue recibiendo la excepción EndOfStreamException, lo que provoca un bloqueo
crash apache-zookeeper (1)
Pude resolver el problema al eliminar todas las instantáneas de zookeeper y los archivos de registro del servidor que ejecuta ZooKeeper. No sé por qué esto marcó la diferencia, pero ha estado funcionando bien durante las últimas 22 horas.
Mi Zookeeper está controlando unas cuantas colas diferentes para diferentes trabajos, al mantener los datos relevantes del trabajo en cada nodo hasta que la computadora esté lista para procesar. Si detengo el servicio general, de manera que no se pueden iniciar trabajos, ZooKeeper se ejecuta correctamente después de reiniciar. Sin embargo, algunos de estos trabajos parecen causar que ZooKeeper se bloquee con el siguiente mensaje en el registro de ZooKeeper:
WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@349] - caught end of stream exception
EndOfStreamException: Unable to read additional data from client sessionid 0x15677f740ad002a, likely client has closed socket
at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:220)
at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
at java.lang.Thread.run(Thread.java:745)
INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1001] - Closed socket connection for client /127.0.0.1:46998 which had sessionid 0x15677f740ad002a
Mi conocimiento de ZooKeeper es muy limitado, ya que estoy asumiendo el control del tipo que lo creó originalmente.
He intentado eliminar muchos nodos con rmr [path]
en el shell del guardián del zoológico, que parecía tener algún efecto (se eliminaron 50k + nodos que quedaron sin uso), pero se ha bloqueado todos los días, y anoche no se pudo ejecutar durante más de un par de minutos antes de que se produjera el mismo error / bloqueo.
¿Cómo puedo saber qué está causando esto?
Estoy bastante seguro de que es un problema general con los datos recibidos o los datos / nodos almacenados. El disco está lleno al 92%. También encontré esta publicación: Zookeeper sigue recibiendo el WARN: "excepción de final de transmisión detectada" , pero la solución no tiene mucho sentido para mí. También estoy bastante seguro de que ninguno de los mensajes guardados en mis znodos tienen más de 1 MB de tamaño, pero no estoy seguro de cómo confirmarlo.
¿Hay alguna manera de cambiar el registro de ZooKeeper para que pueda imprimir información adicional, como el contenido / nombre del znode en el que está funcionando antes de que se bloquee?