hi all,

we encountered problem with 0.8.1.1, as a lot of BadVersion error in log,
we believe it's caused by issue
https://issues.apache.org/jira/browse/KAFKA-1382, so we upgraded kafka to
0.8.2.2.

but we found that kafka is using high CPU. following is the result of 'top'
command:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

16781 root      20   0 9072m 874m  17m S 975.5  5.5 471:27.56 java

I tried to use HRPOF to measure the CPU usage, got the result:
CPU SAMPLES BEGIN (total = 139166340) Fri Mar 18 16:30:28 2016 rank self
accum count trace method 1 37.63% 37.63% 52372145 325245
sun.nio.ch.EPollArrayWrapper.epollWait 2 33.37% 71.00% 46441166 319805
sun.nio.ch.EPollArrayWrapper.epollWait 3 8.49% 79.50% 11819885 302339
java.net.PlainSocketImpl.socketAccept 4 4.25% 83.74% 5909221 302910
java.net.PlainSocketImpl.socketAccept 5 4.23% 87.98% 5891650 310256
sun.nio.ch.EPollArrayWrapper.epollWait 6 4.21% 92.19% 5859357 319905
sun.nio.ch.EPollArrayWrapper.epollWait 7 4.16% 96.34% 5782672 336990
java.net.SocketInputStream.socketRead0 8 1.99% 98.33% 2762683 320651
sun.misc.Unsafe.park 9 0.27% 98.60% 375233 319447 sun.misc.Unsafe.park 10
0.25% 98.85% 351701 320536 sun.misc.Unsafe.park 11 0.24% 99.09% 329232
329274 sun.misc.Unsafe.park 12 0.08% 99.17% 109428 325405
sun.nio.ch.EPollArrayWrapper.epollCtl 13 0.05% 99.22% 69762 329549
sun.nio.ch.EPollArrayWrapper.interrupt 14 0.03% 99.25% 45197 328439
kafka.network.RequestChannel$Request.updateRequestMetrics 15 0.03% 99.28%
38496 328333 sun.nio.ch.FileDispatcherImpl.write0 16 0.02% 99.30% 33307
337909 java.lang.System.identityHashCode 17 0.02% 99.32% 31783 328763
sun.nio.ch.NativeThread.current 18 0.02% 99.34% 30917 322537
sun.misc.Unsafe.unpark 19 0.02% 99.37% 29943 325979
sun.nio.ch.EPollArrayWrapper.epollWait 20 0.02% 99.39% 27788 328474
sun.nio.ch.FileDispatcherImpl.write0 21 0.02% 99.40% 26448 328397
sun.nio.ch.FileDispatcherImpl.write0 22 0.02% 99.42% 25177 329364
scala.collection.mutable.HashTable$class.$init$ 23 0.02% 99.44% 24230
328786 java.lang.Thread.currentThread 24 0.02% 99.46% 22683 328795
java.lang.Thread.currentThread 25 0.01% 99.47% 16264 328092
sun.nio.ch.IOUtil.drain

as most of time, epollwait shouldn't be so expensive, it should be the
problem of way of statistic.
then I tried YourKit, found that most heavy method is in
FetchRequestPurgatory.expire(), I uploaded the screenshot of YourKit:
http://imgur.com/2tXjhBI

does anyone have same problem?

-- 
Don't schedule every day, make them disorder.

Reply via email to