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

View File

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

View File

@ -173,9 +173,8 @@ func DefaultConfig() *Config {
Inactive: 20 * time.Second,
},
Transport: TransportConfig{
MaxIdleConnsPerHost: 32,
IdleConnTimeout: 90 * time.Second,
MaxConnsPerHost: 0, // 0 表示不限制
IdleConnTimeout: 90 * time.Second,
MaxConnsPerHost: 0, // 0 表示不限制
},
},
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, " inactive: %ds # 未访问淘汰时间\n", int(cfg.Performance.FileCache.Inactive.Seconds()))
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, " max_conns_per_host: %d # 每主机最大连接0 表示不限制)\n", cfg.Performance.Transport.MaxConnsPerHost)
buf.WriteString("\n")

View File

@ -121,9 +121,6 @@ func TestDefaultConfigPerformance(t *testing.T) {
}
// 验证 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 {
t.Errorf("Transport.IdleConnTimeout 期望 90s, 实际 %v", cfg.Performance.Transport.IdleConnTimeout)
}

View File

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

View File

@ -1048,8 +1048,7 @@ func TestValidatePerformance(t *testing.T) {
name: "有效的 transport 配置(零值)",
config: PerformanceConfig{
Transport: TransportConfig{
MaxIdleConnsPerHost: 0,
MaxConnsPerHost: 0,
MaxConnsPerHost: 0,
},
},
wantErr: false,
@ -1058,22 +1057,11 @@ func TestValidatePerformance(t *testing.T) {
name: "有效的 transport 配置(正值)",
config: PerformanceConfig{
Transport: TransportConfig{
MaxIdleConnsPerHost: 10,
MaxConnsPerHost: 50,
MaxConnsPerHost: 50,
},
},
wantErr: false,
},
{
name: "MaxIdleConnsPerHost 负数",
config: PerformanceConfig{
Transport: TransportConfig{
MaxIdleConnsPerHost: -1,
},
},
wantErr: true,
errMsg: "transport.max_idle_conns_per_host 不能为负数",
},
{
name: "MaxConnsPerHost 负数",
config: PerformanceConfig{
@ -1084,17 +1072,6 @@ func TestValidatePerformance(t *testing.T) {
wantErr: true,
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 {