[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1413?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13666000#comment-13666000
 ] 

Thawan Kooburat commented on ZOOKEEPER-1413:
--------------------------------------------

About snapshotSizeFactor, this parameter need to be tuned in conjunction with 
ZOOKEEPER-1709.

Let says your snapshot size is 600MB, but the most recent txnlog file is 2GB. 
We don't want to load txnlog at all since it is slower than sending a snapshot 
even if the learner may only need to a few txn at the end of the txnlog file.  

With ZOOKEEPER-1709, you can limit the size of the most recent txnlog to 200MB. 
 If snapshot factor is configured at 1/3. The leader will use txnlog if it only 
needs to load 1 txnlog file.

I haven't done extensive testing to figure out the optimal setting. In our 
prod, the txnlog size limit should be small enough that the leader don't 
overload if a large number of learners try to synchronize at once. And the 
snapshot factor is configured such that the leader try to use at least 1 
txnlog. 
  
                
> Use on-disk transaction log for learner sync up
> -----------------------------------------------
>
>                 Key: ZOOKEEPER-1413
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1413
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: server
>    Affects Versions: 3.4.3
>            Reporter: Thawan Kooburat
>            Assignee: Thawan Kooburat
>            Priority: Minor
>              Labels: performance
>             Fix For: 3.5.0
>
>         Attachments: ZOOKEEPER-1413.patch, ZOOKEEPER-1413.patch, 
> ZOOKEEPER-1413.patch
>
>
> Motivation:
> The learner syncs up with leader by retrieving committed log from the leader. 
> Currently, the leader only keeps 500 entries of recently committed log in 
> memory. If the learner falls behind more than 500 updates, the leader will 
> send the entire snapshot to the learner. 
> With the size of the snapshot for some of our Zookeeper deployments (~10G), 
> it is prohibitively expensive to send the entire snapshot over network. 
> Additionally, our Zookeeper may serve more than 4K updates per seconds. As a 
> result, a network hiccups for less than a second will cause the learner to 
> use snapshot transfer.
> Design:
> Instead of looking only at committed log in memory, the leader will also look 
> at transaction log on disk. The amount of transaction log kept on disk is 
> configurable and the current default is 100k. This will allow Zookeeper to 
> tolerate longer temporal network failure before initiating the snapshot 
> transfer.  
> Implementation:
> We plan to add interface to the persistence layer will can be use to retrieve 
> proposals from on-disk transaction log. These proposals can then be used to 
> send to the learner using existing protocol. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to