[
https://issues.apache.org/jira/browse/ZOOKEEPER-4714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zili Chen resolved ZOOKEEPER-4714.
----------------------------------
Fix Version/s: (was: 3.8.3)
Assignee: Zili Chen
Resolution: Fixed
master via e2e8ec661f8d50e5341bdefa0ccd8c5116f5ce4b
> Improve syncRequestProcessor performance
> ----------------------------------------
>
> Key: ZOOKEEPER-4714
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4714
> Project: ZooKeeper
> Issue Type: Wish
> Components: server
> Affects Versions: 3.8.1
> Reporter: Yan Zhao
> Assignee: Zili Chen
> Priority: Major
> Labels: pull-request-available
> Fix For: 3.9.0
>
> Attachments: 761688051587_.pic.jpg
>
> Time Spent: 3h 10m
> Remaining Estimate: 0h
>
> In the SyncRequestProcessor, a write operation is performed for each write
> request. Two methods are relatively time-consuming.
> 1. Within SyncRequestProcessor#shouldSnapshot, the current size of the
> current file is retrieved, which involves a system call.
> Call stack:
> java.io.File.length(File.java)
> org.apache.zookeeper.server.persistence.FileTxnLog.getCurrentLogSize(FileTxnLog.java:211)
> org.apache.zookeeper.server.persistence.FileTxnLog.getTotalLogSize(FileTxnLog.java:221)
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.getTotalLogSize(FileTxnSnapLog.java:671)
> org.apache.zookeeper.server.ZKDatabase.getTxnSize(ZKDatabase.java:790)
> org.apache.zookeeper.server.SyncRequestProcessor.shouldSnapshot(SyncRequestProcessor.java:145)
> org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:182)
> 2. Within ZKDatabase#append, the current position of the current file is
> retrieved, which also involves a system call.
> Call stack:
> sun.nio.ch.FileDispatcherImpl.seek(FileDispatcherImpl.java)
> sun.nio.ch.FileChannelImpl.position(FileChannelImpl.java:264)
> org.apache.zookeeper.server.persistence.FilePadding.padFile(FilePadding.java:76)
> org.apache.zookeeper.server.persistence.FileTxnLog.append(FileTxnLog.java:298)
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.append(FileTxnSnapLog.java:592)
> org.apache.zookeeper.server.ZKDatabase.append(ZKDatabase.java:678)
> org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:181)
> Therefore, it is best to maintain the current size and position of the
> current file ourselves, as this can greatly improve performance.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)