From a10ea01c847c2ebae1ac75a6342a175370280ecc Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Thu, 30 Oct 2025 10:07:01 +0800 Subject: [PATCH] fix: backend proxy worker count (#23636) Co-authored-by: Qiu Jian --- pkg/apigateway/app/app.go | 2 +- pkg/apigateway/handler/backendproxy.go | 13 ++++++++++--- pkg/apigateway/options/options.go | 4 +++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/pkg/apigateway/app/app.go b/pkg/apigateway/app/app.go index 836394e973..645d5d77eb 100644 --- a/pkg/apigateway/app/app.go +++ b/pkg/apigateway/app/app.go @@ -74,7 +74,7 @@ func (app *Application) InitHandlers() *Application { if options.Options.EnableBackendServiceProxy { // bind backend service API proxy log.Infof("enable backend service proxy") - app.BackendServiceProxyHandler = handler.NewBackendServiceProxyHandler("/api/s/") + app.BackendServiceProxyHandler = handler.NewBackendServiceProxyHandler("/api/s/", options.Options.BackendProxyReadWorkerCount, options.Options.BackendProxyWriteWorkerCount) } app.CloudIdSAMLHandler = handler.NewProxyHandlerWithService(cloudid.SAML_IDP_PREFIX, cloudid.SERVICE_TYPE) diff --git a/pkg/apigateway/handler/backendproxy.go b/pkg/apigateway/handler/backendproxy.go index 71e65c601f..801312308a 100644 --- a/pkg/apigateway/handler/backendproxy.go +++ b/pkg/apigateway/handler/backendproxy.go @@ -33,11 +33,18 @@ import ( type SBackendServiceProxyHandler struct { prefix string + + readWorker *appsrv.SWorkerManager + writeWorker *appsrv.SWorkerManager } -func NewBackendServiceProxyHandler(prefix string) *SBackendServiceProxyHandler { +func NewBackendServiceProxyHandler(prefix string, readWorkerCount, writeWorkerCount int) *SBackendServiceProxyHandler { + log.Infof("NewBackendServiceProxyHandler: %s, readWorkerCount: %d, writeWorkerCount: %d", prefix, readWorkerCount, writeWorkerCount) return &SBackendServiceProxyHandler{ prefix: prefix, + + readWorker: appsrv.NewWorkerManager("apigateway-backend-api-read", readWorkerCount, appsrv.DEFAULT_BACKLOG, false), + writeWorker: appsrv.NewWorkerManager("apigateway-backend-api-write", writeWorkerCount, appsrv.DEFAULT_BACKLOG, false), } } @@ -96,9 +103,9 @@ func (h *SBackendServiceProxyHandler) Bind(app *appsrv.Application) { } var worker *appsrv.SWorkerManager if method == "GET" || method == "HEAD" { - worker = appsrv.NewWorkerManager("apigateway-backend-api-read", 8, appsrv.DEFAULT_BACKLOG, false) + worker = h.readWorker } else { - worker = appsrv.NewWorkerManager("apigateway-backend-api-write", 4, appsrv.DEFAULT_BACKLOG, false) + worker = h.writeWorker } hi.SetWorkerManager(worker) return hi diff --git a/pkg/apigateway/options/options.go b/pkg/apigateway/options/options.go index 616ad0587a..eb6dd53829 100644 --- a/pkg/apigateway/options/options.go +++ b/pkg/apigateway/options/options.go @@ -44,7 +44,9 @@ type GatewayOptions struct { DisableReporting bool `default:"false" help:"Reporting data every 24 hours, report data incloud version, os, platform and usages"` // 启用后端服务反向代理网关 - EnableBackendServiceProxy bool `default:"false" help:"Proxy API request to backend services"` + EnableBackendServiceProxy bool `default:"true" help:"Proxy API request to backend services"` + BackendProxyReadWorkerCount int `default:"8" help:"Request worker thread count, default is 8"` + BackendProxyWriteWorkerCount int `default:"4" help:"Request worker thread count, default is 4"` common_options.CommonOptions `"request_worker_count->default":"32"`