From 443c4538bb6b88bfc65ed4ad3a1c8a29e23b8036 Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Thu, 25 Dec 2025 21:05:01 +0800 Subject: [PATCH] feat(config): add `commercial-mode` to optimize HTTP middleware for lower memory usage --- config.example.yaml | 3 +++ internal/api/server.go | 16 +++++++++------- internal/config/config.go | 3 +++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/config.example.yaml b/config.example.yaml index f6390d2f..f0af19dc 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -39,6 +39,9 @@ api-keys: # Enable debug logging debug: false +# When true, disable high-overhead HTTP middleware features to reduce per-request memory usage under high concurrency. +commercial-mode: false + # When true, write application logs to rotating files instead of stdout logging-to-file: false diff --git a/internal/api/server.go b/internal/api/server.go index 80c30ebc..bd2f55eb 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -209,13 +209,15 @@ func NewServer(cfg *config.Config, authManager *auth.Manager, accessManager *sdk // Resolve logs directory relative to the configuration file directory. var requestLogger logging.RequestLogger var toggle func(bool) - if optionState.requestLoggerFactory != nil { - requestLogger = optionState.requestLoggerFactory(cfg, configFilePath) - } - if requestLogger != nil { - engine.Use(middleware.RequestLoggingMiddleware(requestLogger)) - if setter, ok := requestLogger.(interface{ SetEnabled(bool) }); ok { - toggle = setter.SetEnabled + if !cfg.CommercialMode { + if optionState.requestLoggerFactory != nil { + requestLogger = optionState.requestLoggerFactory(cfg, configFilePath) + } + if requestLogger != nil { + engine.Use(middleware.RequestLoggingMiddleware(requestLogger)) + if setter, ok := requestLogger.(interface{ SetEnabled(bool) }); ok { + toggle = setter.SetEnabled + } } } diff --git a/internal/config/config.go b/internal/config/config.go index bc6ae9d8..1dcac109 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -39,6 +39,9 @@ type Config struct { // Debug enables or disables debug-level logging and other debug features. Debug bool `yaml:"debug" json:"debug"` + // CommercialMode disables high-overhead HTTP middleware features to minimize per-request memory usage. + CommercialMode bool `yaml:"commercial-mode" json:"commercial-mode"` + // LoggingToFile controls whether application logs are written to rotating files or stdout. LoggingToFile bool `yaml:"logging-to-file" json:"logging-to-file"`