A regionserver is configured with a certain number of RPC handlers (hbase.regionserver.handler.count). When these handlers are all occupied, the calls back up into a callQueue. This call queue is bounded by ipc.server.max.callqueue.size (defaulting to 1GB of serialized requests) and ipc.server.max.callqueue.length (10 * numHandlers). So, with 5 handlers a maximum of 50 calls will be queued up before requests are rejected outright.
The RpcQueueTime metrics are a measurement of how long individual calls stay in this queued state. If your handlers were never 100% occupied, this value would be 0. An average of 3 hours is concerning, it basically means that when a call comes into the RegionServer it takes on average 3 hours to start processing, because handlers are all occupied for that amount of time. You can lower time through a few options: - Up the max number of handlers (beware using too many, as this just shifts load to the disks, and also takes more memory) - Make your requests smaller (use caching or batching on a scan to return less data per RPC call) - Lower your client-side timeouts, so that you can handle the issue on the client side (i.e. retries) - Investigate disk or network issues that could be causing extremely slow response times (ensure data is 100% local, too) Just for perspective, the nominal operating value of this probably varies greatly with the workload/environment, but in our clusters we have an Average RPC Queue Time of near 0. We only see the callQueue fill up in the case of real problems, and almost always respond with immediate redistribution of data to other servers. HTH - Bryan On Wed, Nov 20, 2013 at 11:31 AM, Shawn Hermans <[email protected]>wrote: > I am using CDH 4.3.1 with HBase 0.94.6. Using Cloudera manager, I notice a > metric called Average RPC Queue Time is abnormal. It is over 3 hours > normally and drops to a few minutes during non-peak times. What is the > meaning of this metric? Are these high queue times normal? > > Thanks, > Shawn >
