[
https://issues.apache.org/jira/browse/HBASE-27676?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Xiaolin Ha updated HBASE-27676:
-------------------------------
Priority: Major (was: Minor)
> 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
>
> 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.
> {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)