feat(server): 添加高并发优化配置支持

- ServerConfig 新增 Concurrency/ReadBufferSize/WriteBufferSize/ReduceMemoryUsage 配置
- defaults.go 设置默认值:256K 并发连接、16KB 缓冲区
- server.go 在 singleMode 和 vhostMode 中应用配置

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
xfy 2026-04-15 18:26:49 +08:00
parent fa55bfd497
commit bf14282e40
3 changed files with 26 additions and 0 deletions

View File

@ -199,6 +199,12 @@ type ServerConfig struct {
MaxConnsPerIP int `yaml:"max_conns_per_ip"`
IdleTimeout time.Duration `yaml:"idle_timeout"`
WriteTimeout time.Duration `yaml:"write_timeout"`
// 高并发优化配置(可选,未配置时使用默认值)
Concurrency int `yaml:"concurrency"` // 最大并发连接数(默认 256 * 1024
ReadBufferSize int `yaml:"read_buffer_size"` // 读缓冲区大小(字节,默认 16KB
WriteBufferSize int `yaml:"write_buffer_size"` // 写缓冲区大小(字节,默认 16KB
ReduceMemoryUsage bool `yaml:"reduce_memory_usage"` // 是否优先减少内存使用(默认 false优先性能
}
// StaticConfig 静态文件服务配置。

View File

@ -45,6 +45,11 @@ func DefaultConfig() *Config {
IdleTimeout: 120 * time.Second,
MaxConnsPerIP: 1000,
MaxRequestsPerConn: 10000,
// 高并发优化配置默认值
Concurrency: 256 * 1024, // 256K 最大并发连接
ReadBufferSize: 16 * 1024, // 16KB 读缓冲
WriteBufferSize: 16 * 1024, // 16KB 写缓冲
ReduceMemoryUsage: false, // 优先性能
CacheAPI: &CacheAPIConfig{
Enabled: false,
Path: "/_cache/purge",
@ -255,6 +260,11 @@ func GenerateConfigYAML(cfg *Config) ([]byte, error) {
fmt.Fprintf(&buf, " max_conns_per_ip: %d # 每 IP 最大连接数0 表示不限制)\n", cfg.Servers[0].MaxConnsPerIP)
fmt.Fprintf(&buf, " max_requests_per_conn: %d # 每连接最大请求数0 表示不限制)\n", cfg.Servers[0].MaxRequestsPerConn)
fmt.Fprintf(&buf, " client_max_body_size: \"1MB\" # 请求体大小限制(支持单位: b, kb, mb, gb\n")
buf.WriteString(" # 高并发优化配置(可选,未配置时使用默认值)\n")
fmt.Fprintf(&buf, " # concurrency: %d # 最大并发连接数(默认 %d\n", cfg.Servers[0].Concurrency, cfg.Servers[0].Concurrency)
fmt.Fprintf(&buf, " # read_buffer_size: %d # 读缓冲区大小(字节,默认 %d\n", cfg.Servers[0].ReadBufferSize, cfg.Servers[0].ReadBufferSize)
fmt.Fprintf(&buf, " # write_buffer_size: %d # 写缓冲区大小(字节,默认 %d\n", cfg.Servers[0].WriteBufferSize, cfg.Servers[0].WriteBufferSize)
fmt.Fprintf(&buf, " # reduce_memory_usage: %v # 是否优先减少内存使用(默认 %v\n", cfg.Servers[0].ReduceMemoryUsage, cfg.Servers[0].ReduceMemoryUsage)
buf.WriteString("\n")
// cache_api 配置

View File

@ -512,6 +512,11 @@ func (s *Server) startSingleMode() error {
MaxConnsPerIP: serverCfg.MaxConnsPerIP,
MaxRequestsPerConn: serverCfg.MaxRequestsPerConn,
CloseOnShutdown: true,
// 高并发优化配置
Concurrency: serverCfg.Concurrency,
ReadBufferSize: serverCfg.ReadBufferSize,
WriteBufferSize: serverCfg.WriteBufferSize,
ReduceMemoryUsage: serverCfg.ReduceMemoryUsage,
}
s.running = true
@ -632,6 +637,11 @@ func (s *Server) startVHostMode() error {
MaxConnsPerIP: serverCfg.MaxConnsPerIP,
MaxRequestsPerConn: serverCfg.MaxRequestsPerConn,
CloseOnShutdown: true,
// 高并发优化配置
Concurrency: serverCfg.Concurrency,
ReadBufferSize: serverCfg.ReadBufferSize,
WriteBufferSize: serverCfg.WriteBufferSize,
ReduceMemoryUsage: serverCfg.ReduceMemoryUsage,
}
s.running = true