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.