diff --git a/restagent/restagent.go b/restagent/restagent.go index 4a3eaa63..57104b73 100644 --- a/restagent/restagent.go +++ b/restagent/restagent.go @@ -5,6 +5,7 @@ import ( "net/http" "os" "sync" + "time" _ "net/http/pprof" @@ -34,7 +35,9 @@ import ( _ "be.ems/swagger2docs" ) -var wg sync.WaitGroup +var wg sync.WaitGroup // 等待服务 +var maxRetries = 10 // 最大重试次数 +var retryInterval = 5 * time.Second // 重试间隔时间 // @title OMC Swagger API // @version 1.0.8 @@ -242,7 +245,13 @@ func loadDev(app *gin.Engine) { // 启用pprof HTTP服务 go func(addr string) { defer wg.Done() - fmt.Println(http.ListenAndServe(addr, nil)) + for i := range maxRetries { + if err := http.ListenAndServe(addr, nil); err != nil { + logger.Errorf("pprof run err:%v", err) + time.Sleep(retryInterval) // 重试间隔时间 + logger.Warnf("trying to restart HTTP server on %s (Attempt %d)", addr, i) + } + } }(pprofAddr) } } @@ -277,8 +286,13 @@ func loadServer(app *gin.Engine) { wg.Add(1) go func(addr string, certFile string, keyFile string) { defer wg.Done() - err := app.RunTLS(addr, certFile, keyFile) - logger.Errorf("run tls err:%v", err) + for i := range maxRetries { + if err := app.RunTLS(addr, certFile, keyFile); err != nil { + logger.Errorf("routeServer run tls err:%v", err) + time.Sleep(retryInterval) // 重试间隔时间 + logger.Warnf("trying to restart HTTPS server on %s (Attempt %d)", addr, i) + } + } }(addr, certFile, keyFile) } else { addr := "" @@ -295,8 +309,13 @@ func loadServer(app *gin.Engine) { wg.Add(1) go func(addr string) { defer wg.Done() - err := app.Run(addr) - logger.Errorf("run err:%v", err) + for i := range maxRetries { + if err := app.Run(addr); err != nil { + logger.Errorf("routeServer run err:%v", err) + time.Sleep(retryInterval) // 重试间隔时间 + logger.Warnf("trying to restart HTTP server on %s (Attempt %d)", addr, i) + } + } }(addr) } } @@ -334,8 +353,13 @@ func loadWebServer() { wg.Add(1) go func(addr string, certFile string, keyFile string) { defer wg.Done() - err := web.RunTLS(addr, certFile, keyFile) - logger.Errorf("web run tls err:%v", err) + for i := range maxRetries { + if err := web.RunTLS(addr, certFile, keyFile); err != nil { + logger.Errorf("webServer run tls err:%v", err) + time.Sleep(retryInterval) // 重试间隔时间 + logger.Warnf("trying to restart HTTPS server on %s (Attempt %d)", addr, i) + } + } }(addr, certFile, keyFile) } else { if addr == "" || addr == "" { @@ -345,8 +369,13 @@ func loadWebServer() { wg.Add(1) go func(addr string) { defer wg.Done() - err := web.Run(addr) - logger.Errorf("web run err:%v", err) + for i := range maxRetries { + if err := web.Run(addr); err != nil { + logger.Errorf("webServer run err:%v", err) + time.Sleep(retryInterval) // 重试间隔时间 + logger.Warnf("trying to restart HTTP server on %s (Attempt %d)", addr, i) + } + } }(addr) } }