ZooKeeper high cpu usage when invalid requests ----------------------------------------------
Key: ZOOKEEPER-893 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-893 Project: Zookeeper Issue Type: Bug Components: server Affects Versions: 3.3.1 Environment: Linux 2.6.16 4x Intel(R) Xeon(R) CPU X3320 @ 2.50GHz java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode) Reporter: Thijs Terlouw Priority: Critical When ZooKeeper receives certain illegally formed messages on the internal communication port (:4181 by default), it's possible for ZooKeeper to enter an infinite loop which causes 100% cpu usage. It's related to ZOOKEEPER-427, but that patch does not resolve all issues. from: src/java/main/org/apache/zookeeper/server/quorum/QuorumCnxManager.java the two affected parts: =========== int length = msgLength.getInt(); if(length <= 0) { throw new IOException("Invalid packet length:" + length); } =========== =========== while (message.hasRemaining()) { temp_numbytes = channel.read(message); if(temp_numbytes < 0) { throw new IOException("Channel eof before end"); } numbytes += temp_numbytes; } =========== how to replicate this bug: perform an nmap portscan against your zookeeper server: "nmap -sV -n your.ip.here -p4181" wait for a while untill you see some messages in the logfile and then you will see 100% cpu usage. It does not recover from this situation. With my patch, it does not occur anymore -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.