feat(config): add commercial-mode to optimize HTTP middleware for lower memory usage

This commit is contained in:
Luis Pater
2025-12-25 21:05:01 +08:00
parent 8e749ac22d
commit 443c4538bb
3 changed files with 15 additions and 7 deletions

View File

@@ -39,6 +39,9 @@ api-keys:
# Enable debug logging # Enable debug logging
debug: false 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 # When true, write application logs to rotating files instead of stdout
logging-to-file: false logging-to-file: false

View File

@@ -209,13 +209,15 @@ func NewServer(cfg *config.Config, authManager *auth.Manager, accessManager *sdk
// Resolve logs directory relative to the configuration file directory. // Resolve logs directory relative to the configuration file directory.
var requestLogger logging.RequestLogger var requestLogger logging.RequestLogger
var toggle func(bool) var toggle func(bool)
if optionState.requestLoggerFactory != nil { if !cfg.CommercialMode {
requestLogger = optionState.requestLoggerFactory(cfg, configFilePath) if optionState.requestLoggerFactory != nil {
} requestLogger = optionState.requestLoggerFactory(cfg, configFilePath)
if requestLogger != nil { }
engine.Use(middleware.RequestLoggingMiddleware(requestLogger)) if requestLogger != nil {
if setter, ok := requestLogger.(interface{ SetEnabled(bool) }); ok { engine.Use(middleware.RequestLoggingMiddleware(requestLogger))
toggle = setter.SetEnabled if setter, ok := requestLogger.(interface{ SetEnabled(bool) }); ok {
toggle = setter.SetEnabled
}
} }
} }

View File

@@ -39,6 +39,9 @@ type Config struct {
// Debug enables or disables debug-level logging and other debug features. // Debug enables or disables debug-level logging and other debug features.
Debug bool `yaml:"debug" json:"debug"` 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 controls whether application logs are written to rotating files or stdout.
LoggingToFile bool `yaml:"logging-to-file" json:"logging-to-file"` LoggingToFile bool `yaml:"logging-to-file" json:"logging-to-file"`