refactor(config): 移除 Transport.MaxIdleConnsPerHost 配置字段

简化连接池配置,仅保留 MaxConnsPerHost 作为总连接上限。
MaxConnsPerHost 已涵盖活跃和空闲连接,无需单独控制空闲连接数。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
xfy 2026-04-17 11:31:34 +08:00
parent 5f60dc9ff7
commit 83fc6beba3
6 changed files with 6 additions and 45 deletions

View File

@ -283,7 +283,6 @@ performance:
max_size: 268435456 # 256MB max_size: 268435456 # 256MB
inactive: 60s inactive: 60s
transport: transport:
max_idle_conns_per_host: 100
idle_conn_timeout: 90s idle_conn_timeout: 90s
max_conns_per_host: 500 max_conns_per_host: 500
@ -751,7 +750,6 @@ performance:
max_entries: 50000 # 根据内存调整 max_entries: 50000 # 根据内存调整
max_size: 268435456 # 256MB max_size: 268435456 # 256MB
transport: transport:
max_idle_conns_per_host: 100
idle_conn_timeout: 90s idle_conn_timeout: 90s
max_conns_per_host: 500 # 根据后端容量调整 max_conns_per_host: 500 # 根据后端容量调整
``` ```

View File

@ -1377,27 +1377,21 @@ type FileCacheConfig struct {
// 配置代理后端连接的连接池参数。 // 配置代理后端连接的连接池参数。
// //
// 注意事项: // 注意事项:
// - MaxIdleConnsPerHost 控制每个后端主机的空闲连接
// - IdleConnTimeout 控制空闲连接的保持时间 // - IdleConnTimeout 控制空闲连接的保持时间
// - MaxConnsPerHost 限制每个后端主机的总连接数 // - MaxConnsPerHost 限制每个后端主机的总连接数(含活跃和空闲)
// //
// 使用示例: // 使用示例:
// //
// transport: // transport:
// max_idle_conns_per_host: 10
// idle_conn_timeout: 90s // idle_conn_timeout: 90s
// max_conns_per_host: 100 // max_conns_per_host: 100
type TransportConfig struct { type TransportConfig struct {
// MaxIdleConnsPerHost 每主机最大空闲连接
// 单个后端主机的最大空闲连接数
MaxIdleConnsPerHost int `yaml:"max_idle_conns_per_host"`
// IdleConnTimeout 空闲连接超时 // IdleConnTimeout 空闲连接超时
// 空闲连接的最大存活时间 // 空闲连接的最大存活时间
IdleConnTimeout time.Duration `yaml:"idle_conn_timeout"` IdleConnTimeout time.Duration `yaml:"idle_conn_timeout"`
// MaxConnsPerHost 每主机最大连接数 // MaxConnsPerHost 每主机最大连接数
// 单个后端主机的总连接数上限 // 单个后端主机的总连接数上限(包括活跃连接和空闲连接)
MaxConnsPerHost int `yaml:"max_conns_per_host"` MaxConnsPerHost int `yaml:"max_conns_per_host"`
} }

View File

@ -173,9 +173,8 @@ func DefaultConfig() *Config {
Inactive: 20 * time.Second, Inactive: 20 * time.Second,
}, },
Transport: TransportConfig{ Transport: TransportConfig{
MaxIdleConnsPerHost: 32, IdleConnTimeout: 90 * time.Second,
IdleConnTimeout: 90 * time.Second, MaxConnsPerHost: 0, // 0 表示不限制
MaxConnsPerHost: 0, // 0 表示不限制
}, },
}, },
Monitoring: MonitoringConfig{ Monitoring: MonitoringConfig{
@ -600,7 +599,6 @@ func GenerateConfigYAML(cfg *Config) ([]byte, error) {
fmt.Fprintf(&buf, " max_size: %d # 内存上限(字节,%dMB\n", cfg.Performance.FileCache.MaxSize, cfg.Performance.FileCache.MaxSize/1024/1024) fmt.Fprintf(&buf, " max_size: %d # 内存上限(字节,%dMB\n", cfg.Performance.FileCache.MaxSize, cfg.Performance.FileCache.MaxSize/1024/1024)
fmt.Fprintf(&buf, " inactive: %ds # 未访问淘汰时间\n", int(cfg.Performance.FileCache.Inactive.Seconds())) fmt.Fprintf(&buf, " inactive: %ds # 未访问淘汰时间\n", int(cfg.Performance.FileCache.Inactive.Seconds()))
buf.WriteString(" transport: # HTTP Transport 连接池\n") buf.WriteString(" transport: # HTTP Transport 连接池\n")
fmt.Fprintf(&buf, " max_idle_conns_per_host: %d # 每主机空闲连接\n", cfg.Performance.Transport.MaxIdleConnsPerHost)
fmt.Fprintf(&buf, " idle_conn_timeout: %ds # 空闲超时\n", int(cfg.Performance.Transport.IdleConnTimeout.Seconds())) fmt.Fprintf(&buf, " idle_conn_timeout: %ds # 空闲超时\n", int(cfg.Performance.Transport.IdleConnTimeout.Seconds()))
fmt.Fprintf(&buf, " max_conns_per_host: %d # 每主机最大连接0 表示不限制)\n", cfg.Performance.Transport.MaxConnsPerHost) fmt.Fprintf(&buf, " max_conns_per_host: %d # 每主机最大连接0 表示不限制)\n", cfg.Performance.Transport.MaxConnsPerHost)
buf.WriteString("\n") buf.WriteString("\n")

View File

@ -121,9 +121,6 @@ func TestDefaultConfigPerformance(t *testing.T) {
} }
// 验证 Transport 默认值 // 验证 Transport 默认值
if cfg.Performance.Transport.MaxIdleConnsPerHost != 32 {
t.Errorf("Transport.MaxIdleConnsPerHost 期望 32, 实际 %d", cfg.Performance.Transport.MaxIdleConnsPerHost)
}
if cfg.Performance.Transport.IdleConnTimeout != 90*time.Second { if cfg.Performance.Transport.IdleConnTimeout != 90*time.Second {
t.Errorf("Transport.IdleConnTimeout 期望 90s, 实际 %v", cfg.Performance.Transport.IdleConnTimeout) t.Errorf("Transport.IdleConnTimeout 期望 90s, 实际 %v", cfg.Performance.Transport.IdleConnTimeout)
} }

View File

@ -1043,9 +1043,6 @@ func validateStream(s *StreamConfig) error {
// - error: 验证失败时返回错误信息,成功返回 nil // - error: 验证失败时返回错误信息,成功返回 nil
func validatePerformance(p *PerformanceConfig) error { func validatePerformance(p *PerformanceConfig) error {
// 检查 Transport 配置(可能导致性能问题) // 检查 Transport 配置(可能导致性能问题)
if p.Transport.MaxIdleConnsPerHost < 0 {
return errors.New("transport.max_idle_conns_per_host 不能为负数")
}
if p.Transport.MaxConnsPerHost < 0 { if p.Transport.MaxConnsPerHost < 0 {
return errors.New("transport.max_conns_per_host 不能为负数") return errors.New("transport.max_conns_per_host 不能为负数")
} }

View File

@ -1048,8 +1048,7 @@ func TestValidatePerformance(t *testing.T) {
name: "有效的 transport 配置(零值)", name: "有效的 transport 配置(零值)",
config: PerformanceConfig{ config: PerformanceConfig{
Transport: TransportConfig{ Transport: TransportConfig{
MaxIdleConnsPerHost: 0, MaxConnsPerHost: 0,
MaxConnsPerHost: 0,
}, },
}, },
wantErr: false, wantErr: false,
@ -1058,22 +1057,11 @@ func TestValidatePerformance(t *testing.T) {
name: "有效的 transport 配置(正值)", name: "有效的 transport 配置(正值)",
config: PerformanceConfig{ config: PerformanceConfig{
Transport: TransportConfig{ Transport: TransportConfig{
MaxIdleConnsPerHost: 10, MaxConnsPerHost: 50,
MaxConnsPerHost: 50,
}, },
}, },
wantErr: false, wantErr: false,
}, },
{
name: "MaxIdleConnsPerHost 负数",
config: PerformanceConfig{
Transport: TransportConfig{
MaxIdleConnsPerHost: -1,
},
},
wantErr: true,
errMsg: "transport.max_idle_conns_per_host 不能为负数",
},
{ {
name: "MaxConnsPerHost 负数", name: "MaxConnsPerHost 负数",
config: PerformanceConfig{ config: PerformanceConfig{
@ -1084,17 +1072,6 @@ func TestValidatePerformance(t *testing.T) {
wantErr: true, wantErr: true,
errMsg: "transport.max_conns_per_host 不能为负数", errMsg: "transport.max_conns_per_host 不能为负数",
}, },
{
name: "多个 transport 字段为负",
config: PerformanceConfig{
Transport: TransportConfig{
MaxIdleConnsPerHost: -2,
MaxConnsPerHost: -3,
},
},
wantErr: true,
errMsg: "transport.max_idle_conns_per_host 不能为负数",
},
} }
for _, tt := range tests { for _, tt := range tests {