diff --git a/src/models/server/server.go b/src/models/server/server.go
index 978a5096..364e6241 100644
--- a/src/models/server/server.go
+++ b/src/models/server/server.go
@@ -445,6 +445,12 @@ func (p *ProxyServer) getWorkConn() (workConn *conn.Conn, err error) {
 }
 
 func (p *ProxyServer) connectionPoolManager(closeCh <-chan struct{}) {
+	defer func() {
+		if r := recover(); r != nil {
+			log.Warn("ProxyName [%s], connectionPoolManager panic %v", p.Name, r)
+		}
+	}()
+
 	for {
 		// check if we need more work connections and send messages to frpc to get more
 		time.Sleep(time.Duration(2) * time.Second)