feat(observability): 为 API 和 worker 增加独立 pprof 诊断端口

This commit is contained in:
tangerineyu
2026-03-25 19:27:33 +08:00
parent 21efce6049
commit 9a0ba45a51
7 changed files with 144 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ import (
apphttp "feedsystem_video_go/internal/http"
rabbitmq "feedsystem_video_go/internal/middleware/rabbitmq"
rediscache "feedsystem_video_go/internal/middleware/redis"
"feedsystem_video_go/internal/observability"
"log"
"strconv"
"time"
@@ -64,6 +65,22 @@ func main() {
defer rmq.Close()
log.Printf("RabbitMQ connected")
}
// Pprof
pprofServer, err := observability.StartPprofServer(
"API",
cfg.ObservabilityConfig.Pprof.Enabled,
cfg.ObservabilityConfig.Pprof.ApiAddr,
)
if err != nil {
log.Printf("Failed to start API pprof server: %v", err)
}
defer func() {
shutdownCtx, cancel := context.WithTimeout(context.Background(), 3 * time.Second)
defer cancel()
if err := observability.Shutdown(shutdownCtx, pprofServer); err != nil {
log.Printf("Failed to shutdown API pprof server: %v", err)
}
}()
// 设置路由
r := apphttp.SetRouter(sqlDB, cache, rmq)

View File

@@ -5,10 +5,12 @@ import (
"feedsystem_video_go/internal/config"
"feedsystem_video_go/internal/db"
rediscache "feedsystem_video_go/internal/middleware/redis"
"feedsystem_video_go/internal/observability"
"feedsystem_video_go/internal/social"
"feedsystem_video_go/internal/video"
"feedsystem_video_go/internal/worker"
"log"
"os"
"os/signal"
"strconv"
@@ -120,6 +122,22 @@ func main() {
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
pprofServer, err := observability.StartPprofServer(
"Worker",
cfg.ObservabilityConfig.Pprof.Enabled,
cfg.ObservabilityConfig.Pprof.WorkerAddr,
)
if err != nil {
log.Printf("Failed to start worker pprof server: %v", err)
}
defer func() {
shutdownCtx, cancel := context.WithTimeout(context.Background(), 3 * time.Second)
defer cancel()
if err := observability.Shutdown(shutdownCtx, pprofServer); err != nil {
log.Printf("Failed to shutdown worker pprof server: %v", err)
}
}()
errCh := make(chan error, 4)
log.Printf("Worker started, consuming queue=%s", socialQueue)
go func() { errCh <- socialWorker.Run(ctx) }()