diff --git a/main.go b/main.go index 1a632049..f1c03e66 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( "fmt" "net/http" "sync" + "time" _ "net/http/pprof" @@ -29,7 +30,9 @@ import ( _ "be.ems/swagger_docs" ) -var wg sync.WaitGroup +var wg sync.WaitGroup // 等待服务 +var maxRetries = 10 // 最大重试次数 +var retryInterval = 5 * time.Second // 重试间隔时间 // @title OMC Swagger API // @version 1.0.8 @@ -217,7 +220,13 @@ func loadGlobalPre(app *gin.Engine) { wg.Add(1) 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) } } @@ -252,8 +261,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 := "" @@ -270,8 +284,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) } } @@ -309,8 +328,13 @@ func loadServerWeb() { 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 == "" { @@ -320,8 +344,13 @@ func loadServerWeb() { 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) } }