Glushak, Vladimir 2013-07-23, 20:51
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:
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.
Sergey Maslyakov 2013-07-24, 05:17