forked from TrueCloudLab/frostfs-node
[#1427] services/tree: Parallelize replicator
Before this commit the replication channel was quickly filled under heavy load. This lead to the continuously increasing latency for all write operations. Now it looks better. Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
8027b7bb6b
commit
33d8fb187a
3 changed files with 78 additions and 40 deletions
|
@ -3,6 +3,7 @@ package tree
|
|||
import (
|
||||
"context"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/golang-lru/simplelru"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/network"
|
||||
|
@ -15,7 +16,10 @@ type clientCache struct {
|
|||
simplelru.LRU
|
||||
}
|
||||
|
||||
const defaultClientCacheSize = 10
|
||||
const (
|
||||
defaultClientCacheSize = 10
|
||||
defaultClientConnectTimeout = time.Second * 2
|
||||
)
|
||||
|
||||
func (c *clientCache) init() {
|
||||
l, _ := simplelru.NewLRU(defaultClientCacheSize, func(key, value interface{}) {
|
||||
|
@ -55,9 +59,11 @@ func dialTreeService(ctx context.Context, netmapAddr string) (*grpc.ClientConn,
|
|||
return nil, err
|
||||
}
|
||||
|
||||
cc, err := grpc.DialContext(ctx, netAddr.URIAddr(), grpc.WithInsecure())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return cc, nil
|
||||
ctx, cancel := context.WithTimeout(ctx, defaultClientConnectTimeout)
|
||||
cc, err := grpc.DialContext(ctx, netAddr.URIAddr(),
|
||||
grpc.WithInsecure(),
|
||||
grpc.WithBlock())
|
||||
cancel()
|
||||
|
||||
return cc, err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue