[ 
https://issues.apache.org/jira/browse/HBASE-27683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xiaolin Ha updated HBASE-27683:
-------------------------------
    Attachment: image-2023-05-29-17-16-55-133.png

> Should support single call queue mode for RPC handlers while separating by 
> request type
> ---------------------------------------------------------------------------------------
>
>                 Key: HBASE-27683
>                 URL: https://issues.apache.org/jira/browse/HBASE-27683
>             Project: HBase
>          Issue Type: Improvement
>          Components: Performance, rpc
>    Affects Versions: 2.5.3
>            Reporter: Xiaolin Ha
>            Assignee: Xiaolin Ha
>            Priority: Major
>         Attachments: image-2023-05-29-17-16-55-133.png
>
>
> Currently we not only seperate call queues by request type, e.g. read, write, 
> scan, but also distinguish queues for handlers by the config 
> `hbase.ipc.server.callqueue.handler.factor`, whose description is as follows,
> {code:java}
> Factor to determine the number of call queues.
>   A value of 0 means a single queue shared between all the handlers.
>   A value of 1 means that each handler has its own queue. {code}
> But I think what we want is not only one queue for all the requests, or each 
> handler has its own queue. We also want each request type has its own queue.
> Distinguishing queues in the same type of requests will make some handlers 
> too iddle but some handlers too busy under current balanced/random RPC 
> executor framework. For the extrem case, each handler has its own queue, then 
> if a large request comes for a handler, duing to he executor dispath calls 
> without considering the queue size or the state of the handler, the 
> afterwards coming requests will be queued until the handler complete the 
> large slow request. While other handlers may process small requests quickly, 
> but they can not help or grab calls from the busy queue, they must stay and 
> wait it own queue jobs coming. Then we can see the queue time of some 
> requests are long but there are iddle handlers.
> We can also see these circumstances, that the queue time of calls is too 
> larger than the process time, sometimes twice or more. Restarting the slow RS 
> will make these problems disappear. 
> By using single call queue for each request type, we can fully use the 
> handler resources.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to