From 05fb38632c2f3c413d6befa326465e3d174b9e7e Mon Sep 17 00:00:00 2001 From: Laurent Senta Date: Fri, 3 Mar 2023 11:04:20 +0100 Subject: [PATCH] fix: add resource manager tweaks --- daemon.go | 6 ++++++ resource.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 resource.go diff --git a/daemon.go b/daemon.go index d2921ea..79baeba 100644 --- a/daemon.go +++ b/daemon.go @@ -31,6 +31,11 @@ type daemon struct { } func NewDaemon() *daemon { + rm, err := NewResourceManager() + if err != nil { + panic(err) + } + c, err := connmgr.NewConnManager(600, 900, connmgr.WithGracePeriod(time.Second*30)) if err != nil { panic(err) @@ -39,6 +44,7 @@ func NewDaemon() *daemon { h, err := libp2p.New( libp2p.ConnectionManager(c), libp2p.ConnectionGater(&privateAddrFilterConnectionGater{}), + libp2p.ResourceManager(rm), ) if err != nil { panic(err) diff --git a/resource.go b/resource.go new file mode 100644 index 0000000..f225d93 --- /dev/null +++ b/resource.go @@ -0,0 +1,31 @@ +package main + +import ( + "github.com/libp2p/go-libp2p" + "github.com/libp2p/go-libp2p/core/network" + rcmgr "github.com/libp2p/go-libp2p/p2p/host/resource-manager" +) + +func NewResourceManager() (network.ResourceManager, error) { + // Copied from: + // https://github.com/libp2p/go-libp2p/blob/98837aad1591a9c5834fb6589318ee443cd12fe3/p2p/host/resource-manager/README.md + + scalingLimits := rcmgr.DefaultLimits + libp2p.SetDefaultServiceLimits(&scalingLimits) + + scaledDefaultLimits := scalingLimits.AutoScale() + + cfg := rcmgr.PartialLimitConfig{ + System: rcmgr.ResourceLimits{ + ConnsOutbound: rcmgr.Unlimited, + Conns: rcmgr.Unlimited, + ConnsInbound: rcmgr.Unlimited, + }, + } + + limits := cfg.Build(scaledDefaultLimits) + limiter := rcmgr.NewFixedLimiter(limits) + rm, err := rcmgr.NewResourceManager(limiter) + + return rm, err +}