[lbry] ffldb: increase open file limit and flush more often
This commit is contained in:
parent
783313f53d
commit
188023b729
3 changed files with 11 additions and 14 deletions
|
@ -37,7 +37,7 @@ const (
|
||||||
// maxOpenFiles is the max number of open files to maintain in the
|
// maxOpenFiles is the max number of open files to maintain in the
|
||||||
// open blocks cache. Note that this does not include the current
|
// open blocks cache. Note that this does not include the current
|
||||||
// write file, so there will typically be one more than this value open.
|
// write file, so there will typically be one more than this value open.
|
||||||
maxOpenFiles = 25
|
maxOpenFiles = 40
|
||||||
|
|
||||||
// maxBlockFileSize is the maximum size for each file used to store
|
// maxBlockFileSize is the maximum size for each file used to store
|
||||||
// blocks.
|
// blocks.
|
||||||
|
|
|
@ -2005,6 +2005,7 @@ func openDB(dbPath string, network wire.BitcoinNet, create bool) (database.DB, e
|
||||||
Strict: opt.DefaultStrict,
|
Strict: opt.DefaultStrict,
|
||||||
Compression: opt.NoCompression,
|
Compression: opt.NoCompression,
|
||||||
Filter: filter.NewBloomFilter(10),
|
Filter: filter.NewBloomFilter(10),
|
||||||
|
OpenFilesCacheCapacity: 2000,
|
||||||
}
|
}
|
||||||
ldb, err := leveldb.OpenFile(metadataDbPath, &opts)
|
ldb, err := leveldb.OpenFile(metadataDbPath, &opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -23,7 +23,7 @@ const (
|
||||||
// defaultFlushSecs is the default number of seconds to use as a
|
// defaultFlushSecs is the default number of seconds to use as a
|
||||||
// threshold in between database cache flushes when the cache size has
|
// threshold in between database cache flushes when the cache size has
|
||||||
// not been exceeded.
|
// not been exceeded.
|
||||||
defaultFlushSecs = 300 // 5 minutes
|
defaultFlushSecs = 120 // 2 minutes
|
||||||
|
|
||||||
// ldbBatchHeaderSize is the size of a leveldb batch header which
|
// ldbBatchHeaderSize is the size of a leveldb batch header which
|
||||||
// includes the sequence header and record counter.
|
// includes the sequence header and record counter.
|
||||||
|
@ -499,10 +499,12 @@ func (c *dbCache) flush() error {
|
||||||
// Since the cached keys to be added and removed use an immutable treap,
|
// Since the cached keys to be added and removed use an immutable treap,
|
||||||
// a snapshot is simply obtaining the root of the tree under the lock
|
// a snapshot is simply obtaining the root of the tree under the lock
|
||||||
// which is used to atomically swap the root.
|
// which is used to atomically swap the root.
|
||||||
c.cacheLock.RLock()
|
c.cacheLock.Lock()
|
||||||
cachedKeys := c.cachedKeys
|
cachedKeys := c.cachedKeys
|
||||||
cachedRemove := c.cachedRemove
|
cachedRemove := c.cachedRemove
|
||||||
c.cacheLock.RUnlock()
|
c.cachedKeys = treap.NewImmutable()
|
||||||
|
c.cachedRemove = treap.NewImmutable()
|
||||||
|
c.cacheLock.Unlock()
|
||||||
|
|
||||||
// Nothing to do if there is no data to flush.
|
// Nothing to do if there is no data to flush.
|
||||||
if cachedKeys.Len() == 0 && cachedRemove.Len() == 0 {
|
if cachedKeys.Len() == 0 && cachedRemove.Len() == 0 {
|
||||||
|
@ -514,12 +516,6 @@ func (c *dbCache) flush() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear the cache since it has been flushed.
|
|
||||||
c.cacheLock.Lock()
|
|
||||||
c.cachedKeys = treap.NewImmutable()
|
|
||||||
c.cachedRemove = treap.NewImmutable()
|
|
||||||
c.cacheLock.Unlock()
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue