refactor(config): 移除 Transport.MaxIdleConnsPerHost 配置字段
简化连接池配置,仅保留 MaxConnsPerHost 作为总连接上限。 MaxConnsPerHost 已涵盖活跃和空闲连接,无需单独控制空闲连接数。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
5f60dc9ff7
commit
83fc6beba3
@ -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 # 根据后端容量调整
|
||||||
```
|
```
|
||||||
|
|||||||
@ -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"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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")
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 不能为负数")
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user