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

Ma Gang updated KYLIN-1872:
---------------------------
    Attachment: query_visible_interruptable-master.patch

patch for master

> Make query visible and interruptible, improve server's stablility
> -----------------------------------------------------------------
>
>                 Key: KYLIN-1872
>                 URL: https://issues.apache.org/jira/browse/KYLIN-1872
>             Project: Kylin
>          Issue Type: Improvement
>          Components: Query Engine
>            Reporter: Ma Gang
>            Assignee: Ma Gang
>         Attachments: query_visible_interruptable-1.4rc.patch, 
> query_visible_interruptable-master.patch
>
>
> Problem:
> 1. Large query result will break kylin server, for example: select * from 
> fact_table. Even when properties "kylin.query.scan.threshold" and 
> "kylin.query.mem.budget" are set properly, OOM still happens, because the 
> hbase rpc thread is not interrupted, the result will continually go to kylin 
> server. And server will run OOM quickly when there are multiple such queries.
> 2. Tow many slow queries will occupy all tomcat threads, and make server 
> unresponsed.
> 3. There's no corelation id for a specified query, so it is hard to find the 
> rpc log for a specified query, if there are too many queries running 
> concurrently.
> Solution:
> 1. Interrupt the rpc thread and main query thread when return result size 
> larger than the config limit size.
> 2. Make query visible. Admin can view all running queries, and detail of each 
> query. 
>    Split the query into following steps:
>    1) sql parse
>    2) cube plan 
>    3) query cache
>    4) multiple cube segment query
>       a. for each segment request, have muliple endpoint range request.
>       b. for each endpoint range request, have multiple coprocessor request.
>       c. for each coprocessor request, have multiple region server rpc.
>    Admin can view the startTime/endTime of each step, and the thread stack 
> trace if the step is running.
> 3. Add query id as corelation id in the rpc log.
> 4. Admin can interrupt a running query, to release the thread, memory, etc.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to