[
https://issues.apache.org/jira/browse/HBASE-27676?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xiaolin Ha updated HBASE-27676:
-------------------------------
Fix Version/s: 2.6.0
3.0.0-alpha-4
2.4.17
2.5.4
> Scan handlers in the RPC executor should match at least one scan queues
> -----------------------------------------------------------------------
>
> Key: HBASE-27676
> URL: https://issues.apache.org/jira/browse/HBASE-27676
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 2.5.3
> Reporter: Xiaolin Ha
> Assignee: Xiaolin Ha
> Priority: Major
> Fix For: 2.6.0, 3.0.0-alpha-4, 2.4.17, 2.5.4
>
>
> This issue is try to avoid NO scan queues for some scan handlers.
> For example, if we set hbase.regionserver.handler.count=150,
> hbase.ipc.server.callqueue.scan.ratio=0.1,
> hbase.ipc.server.callqueue.read.ratio=0.5,
> hbase.ipc.server.callqueue.handler.factor=0.1, then there will be 150 * 0.5 *
> 0.1 = 7 scan handlers, but there are 150 * 0.1 * 0.5 * 0.1 = 0 scan RPC
> queues.
> When there are no scan rpc queues, all the scan and get requests will be
> dispatched to the read rpc queues, while we we thought they had been dealt
> with separately, since the scan handler count is not 0. When there are not
> enough handlers for large scan requests under this circumstance, the small
> get requests will be blocked in the rpc queues.
> We can see from the codes,
> {code:java}
> int scanQueues = Math.max(0, (int) Math.floor(readQueues * callqScanShare));
> int scanHandlers = Math.max(0, (int) Math.floor(readHandlers *
> callqScanShare));
> if ((readQueues - scanQueues) > 0) {
> readQueues -= scanQueues;
> readHandlers -= scanHandlers;
> } else {
> scanQueues = 0;
> scanHandlers = 0;
> } {code}
> when readQueues * callqScanShare < 1 but readHandlers * callqScanShare > 1,
> there will be some iddle scan handlers with NO scan queues.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)