diff --git a/backend/internal/config/config.go b/backend/internal/config/config.go index 01436cd1..73fa5983 100644 --- a/backend/internal/config/config.go +++ b/backend/internal/config/config.go @@ -888,7 +888,7 @@ func setDefaults() { // HTTP 上游连接池配置(针对 5000+ 并发用户优化) viper.SetDefault("gateway.max_idle_conns", 240) // 最大空闲连接总数(HTTP/2 场景默认) viper.SetDefault("gateway.max_idle_conns_per_host", 120) // 每主机最大空闲连接(HTTP/2 场景默认) - viper.SetDefault("gateway.max_conns_per_host", 4096) // 每主机最大连接数(含活跃;流式/HTTP1.1 可调大) + viper.SetDefault("gateway.max_conns_per_host", 1024) // 每主机最大连接数(含活跃;流式/HTTP1.1 场景可调大,如 2400+) viper.SetDefault("gateway.idle_conn_timeout_seconds", 90) // 空闲连接超时(秒) viper.SetDefault("gateway.max_upstream_clients", 5000) viper.SetDefault("gateway.client_idle_ttl_seconds", 900) diff --git a/deploy/.env.example b/deploy/.env.example index 17619530..ea55dc39 100644 --- a/deploy/.env.example +++ b/deploy/.env.example @@ -67,13 +67,16 @@ POSTGRES_DB=sub2api POSTGRES_MAX_CONNECTIONS=1024 # POSTGRES_SHARED_BUFFERS:PostgreSQL 用于缓存数据页的共享内存。 # 常见建议:物理内存的 10%~25%(容器内存受限时请按实际限制调整)。 -POSTGRES_SHARED_BUFFERS=256MB +# 8GB 内存容器参考:1GB。 +POSTGRES_SHARED_BUFFERS=1GB # POSTGRES_EFFECTIVE_CACHE_SIZE:查询规划器“假设可用的 OS 缓存大小”(不等于实际分配)。 # 常见建议:物理内存的 50%~75%。 -POSTGRES_EFFECTIVE_CACHE_SIZE=768MB +# 8GB 内存容器参考:6GB。 +POSTGRES_EFFECTIVE_CACHE_SIZE=6GB # POSTGRES_MAINTENANCE_WORK_MEM:维护操作内存(VACUUM/CREATE INDEX 等)。 # 值越大维护越快,但会占用更多内存。 -POSTGRES_MAINTENANCE_WORK_MEM=64MB +# 8GB 内存容器参考:128MB。 +POSTGRES_MAINTENANCE_WORK_MEM=128MB # ----------------------------------------------------------------------------- # PostgreSQL 连接池参数(可选,默认与程序内置一致) @@ -91,11 +94,11 @@ DATABASE_MAX_OPEN_CONNS=50 # DATABASE_MAX_IDLE_CONNS:最大空闲连接数(热连接),建议 <= MAX_OPEN。 # 太小会频繁建连增加延迟;太大会长期占用数据库资源。 DATABASE_MAX_IDLE_CONNS=10 -# DATABASE_CONN_MAX_LIFETIME_MINUTES:单个连接最大存活时间。 +# DATABASE_CONN_MAX_LIFETIME_MINUTES:单个连接最大存活时间(单位:分钟)。 # 用于避免连接长期不重建导致的中间件/LB/NAT 异常或服务端重启后的“僵尸连接”。 # 设置为 0 表示不限制(一般不建议生产环境)。 DATABASE_CONN_MAX_LIFETIME_MINUTES=30 -# DATABASE_CONN_MAX_IDLE_TIME_MINUTES:空闲连接最大存活时间。 +# DATABASE_CONN_MAX_IDLE_TIME_MINUTES:空闲连接最大存活时间(单位:分钟)。 # 超过该时间的空闲连接会被回收,防止长时间闲置占用连接数。 # 设置为 0 表示不限制(一般不建议生产环境)。 DATABASE_CONN_MAX_IDLE_TIME_MINUTES=5 @@ -166,8 +169,8 @@ RATE_LIMIT_OVERLOAD_COOLDOWN_MINUTES=10 # Gateway Scheduling (Optional) # 调度缓存与受控回源配置(缓存就绪且命中时不读 DB) # ----------------------------------------------------------------------------- -# 上游连接池:每主机最大连接数(默认 1024;流式/HTTP1.1 可调大) -GATEWAY_MAX_CONNS_PER_HOST=4096 +# 上游连接池:每主机最大连接数(默认 1024;流式/HTTP1.1 场景可调大,如 2400/4096) +GATEWAY_MAX_CONNS_PER_HOST=1024 # 粘性会话最大排队长度 GATEWAY_SCHEDULING_STICKY_SESSION_MAX_WAITING=3 # 粘性会话等待超时(时间段,例如 45s) diff --git a/deploy/config.example.yaml b/deploy/config.example.yaml index ec520d62..dc554ea6 100644 --- a/deploy/config.example.yaml +++ b/deploy/config.example.yaml @@ -161,7 +161,7 @@ gateway: max_idle_conns_per_host: 120 # Max connections per host # 每个主机的最大连接数 - max_conns_per_host: 4096 + max_conns_per_host: 1024 # Idle connection timeout (seconds) # 空闲连接超时时间(秒) idle_conn_timeout_seconds: 90 diff --git a/deploy/docker-compose-aicodex.yml b/deploy/docker-compose-aicodex.yml index 8c045e30..bf6f6228 100644 --- a/deploy/docker-compose-aicodex.yml +++ b/deploy/docker-compose-aicodex.yml @@ -170,7 +170,7 @@ services: - "-c" - "shared_buffers=${POSTGRES_SHARED_BUFFERS:-1GB}" - "-c" - - "effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4GB}" + - "effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-6GB}" - "-c" - "maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-128MB}" healthcheck: