Minwoo,
You have found an idle thread in the threadpool that is waiting for
work. This is not the source of your slowness. The thread is polling the
internal queue of work, waiting for the next "unit" of something to do.
You should include threads like these from your analysis.
On 2/26/19 8:32 AM, Kang Minwoo wrote:
Hello Users,
I have a question.
My client complains to me, HBase scan spent too much time.
So I started to debug.
I profiled the HBase Client Application using hprof.
The App spent the most time in below stack trace.
----
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:Unknown line)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:Unknown
line)
java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:Unknown
line)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:Unknown
line)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:Unknown
line)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:Unknown
line)
java.lang.Thread.run(Thread.java:Unknown line)
---
---
org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.waitForWork(RpcClientImpl.java:Unknown
line)
org.apache.hadoop.hbase.ipc.RpcClientImpl$Connection.run(RpcClientImpl.java:Unknown
line)
---
they spent 92% of total time.
I don't understand why they spent a lot of time.
Do you have any idea?
Best regards,
Minwoo Kang