From 6b558111301e8e280c12d1af939661940cad84ff Mon Sep 17 00:00:00 2001 From: Kilos Liu <68101977+kilosliu@users.noreply.github.com> Date: Sun, 26 Dec 2021 14:56:34 +0800 Subject: [PATCH] Add MaxIdleWorkerDuration to Server. (#1183) --- server.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/server.go b/server.go index edbd6999fb..90ba5a8d90 100644 --- a/server.go +++ b/server.go @@ -248,6 +248,10 @@ type Server struct { // Deprecated: Use IdleTimeout instead. MaxKeepaliveDuration time.Duration + // MaxIdleWorkerDuration is the maximum idle time of a single worker in the underlying + // worker pool of the Server. Idle workers beyond this time will be cleared. + MaxIdleWorkerDuration time.Duration + // Period between tcp keep-alive messages. // // TCP keep-alive period is determined by operation system by default. @@ -1757,11 +1761,12 @@ func (s *Server) Serve(ln net.Listener) error { s.mu.Unlock() wp := &workerPool{ - WorkerFunc: s.serveConn, - MaxWorkersCount: maxWorkersCount, - LogAllErrors: s.LogAllErrors, - Logger: s.logger(), - connState: s.setState, + WorkerFunc: s.serveConn, + MaxWorkersCount: maxWorkersCount, + LogAllErrors: s.LogAllErrors, + MaxIdleWorkerDuration: s.MaxIdleWorkerDuration, + Logger: s.logger(), + connState: s.setState, } wp.Start()