hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Enis Soztutar (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-16030) All Regions are flushed at about same time when MEMSTORE_PERIODIC_FLUSH is on, causing flush spike
Date Mon, 20 Jun 2016 18:43:58 GMT

    [ https://issues.apache.org/jira/browse/HBASE-16030?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15340153#comment-15340153

Enis Soztutar commented on HBASE-16030:

The config option {{hbase.regionserver.flush.delay.jitter}} looks like it is for generic flushes
(as opposed to periodic memstore flush). We should find a more descriptive name. We control
the periodic memstore flush interval with {{hbase.regionserver.optionalcacheflushinterval}},
so I would suggest that new config should be named something like {{hbase.regionserver.optionalcacheflush.delay.jitter}}.

Why are we doing 5 min as min value. It makes sense to have a range of 0-30min, rather than
5-35 min I think. 

bq. Question, by increasing the flush delay time, the flush request will stay in the queue
for 30 minutes. Will this cause any issue?
This is a very good question. Looking at the MemstoreFlusher, there are a couple of cases
where we will trigger a flush request. If region is more than flush size (128MB), we call
MemstoreFlusher.requestFlush() which DOES NOT requeue the flush request. Only if there is
global memstore pressure, we are calling flushRegion() directly with {{emergencyFlush=true}}.
This means, if the periodic flusher queues a flush with 30 min delay, but then the region
suddenly gets more load and grows more than flush size, the flush WILL NOT happen for another
30 mins. So with this patch, we are increasing the likelihood of a stall happening.   

> All Regions are flushed at about same time when MEMSTORE_PERIODIC_FLUSH is on, causing
flush spike
> --------------------------------------------------------------------------------------------------
>                 Key: HBASE-16030
>                 URL: https://issues.apache.org/jira/browse/HBASE-16030
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 1.2.1
>            Reporter: Tianying Chang
>            Assignee: Tianying Chang
>             Fix For: 2.0.0, 1.4.0, 1.3.1, 1.2.3
>         Attachments: Screen Shot 2016-06-15 at 11.35.42 PM.png, Screen Shot 2016-06-15
at 11.52.38 PM.png, hbase-16030-v2.patch, hbase-16030.patch
> In our production cluster, we observed that memstore flush spike every hour for all regions/RS.
(we use the default memstore periodic flush time of 1 hour). 
> This will happend when two conditions are met: 
> 1. the memstore does not have enough data to be flushed before 1 hour limit reached;
> 2. all regions are opened around the same time, (e.g. all RS are started at the same
time when start a cluster). 
> With above two conditions, all the regions will be flushed around the same time at: startTime+1hour-delay
again and again.
> We added a flush jittering time to randomize the flush time of each region, so that they
don't get flushed at around the same time. We had this feature running in our 94.7 and 94.26
cluster. Recently, we upgrade to 1.2, found this issue still there in 1.2. So we are porting
this into 1.2 branch. 

This message was sent by Atlassian JIRA

View raw message