Hello Zookeeper community,

I've found that our application has issue 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.

Reply via email to