Hello Zookeeper community,
I've found that our application with high CPU usage.
I've done some profiling and found out that root cause of this issue is thread
responsible for connecting to zookeeper.
After some more investigation, i've found out that my application (one process)
has few separate sessions (clients ) that connect to zookeeper. I've refactored
it and decrease number of sessions to 1.
The CPU usage decreased. But still thread responsible for interaction with
zoo-server is consuming a lot of resources:
main-SendThread(zoo.addr:zoo.port)
7,044,378.96 [ms]
984.896 ms / sec
The application is currently in "sleep mode" - it does nothing, but this thread
is really busy. Should it be such?
I've found out that this thread is currently works in infinity loop:
com.db.itrac.router.context.SendThread -> run method, especially <
clientCnxnSocket.doTransport(to, pendingQueue, outgoingQueue); > consumes
most of resources.
To connecting zookeeper I'm using netflix CuratorFramework with default
configuration. Maybe I'm doing smth wrong, please advice?
Also I have two questions:
1. Should such high CPU consumption thread exists in app? Is it proper behavior?
2. Can one application has few separate sessions to zookeeper server? Is it
expected behavior to increase of CPU utilization?
________________________________
This e-mail and any attachment(s) are intended only for the recipient(s) named
above and others who have been specifically authorized to receive them. They
may contain confidential information. If you are not the intended recipient,
please do not read this email or its attachment(s). Furthermore, you are hereby
notified that any dissemination, distribution or copying of this e-mail and any
attachment(s) is strictly prohibited. If you have received this e-mail in
error, please immediately notify the sender by replying to this e-mail and then
delete this e-mail and any attachment(s) or copies thereof from your system.
Thank you.