refactor(server): extract createFastServer helper

- 新增 createFastServer 统一 fasthttp.Server 创建
- 消除 startSingleMode/startVHostMode/startMultiServerMode 中的重复代码
- multi_server 模式现在也支持高并发优化配置

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
xfy 2026-04-29 17:48:40 +08:00
parent f82e363f58
commit 7eaea845e7

View File

@ -113,6 +113,33 @@ func (s *Server) getServerName(cfg *config.ServerConfig) string {
return "lolly/" + version.Version
}
// createFastServer 创建 fasthttp.Server 实例。
//
// 根据配置创建并配置 fasthttp.Server包含所有通用设置。
//
// 参数:
// - serverCfg: 服务器配置对象
// - handler: 请求处理器
//
// 返回值:
// - *fasthttp.Server: 配置好的 fasthttp.Server 实例
func (s *Server) createFastServer(serverCfg *config.ServerConfig, handler fasthttp.RequestHandler) *fasthttp.Server {
return &fasthttp.Server{
Name: s.getServerName(serverCfg),
Handler: handler,
ReadTimeout: serverCfg.ReadTimeout,
WriteTimeout: serverCfg.WriteTimeout,
IdleTimeout: serverCfg.IdleTimeout,
MaxConnsPerIP: serverCfg.MaxConnsPerIP,
MaxRequestsPerConn: serverCfg.MaxRequestsPerConn,
CloseOnShutdown: true,
Concurrency: serverCfg.Concurrency,
ReadBufferSize: serverCfg.ReadBufferSize,
WriteBufferSize: serverCfg.WriteBufferSize,
ReduceMemoryUsage: serverCfg.ReduceMemoryUsage,
}
}
// applyTypesConfig 应用 MIME 类型配置。
//
// 根据配置设置自定义 MIME 类型映射和默认类型。
@ -418,21 +445,8 @@ func (s *Server) startSingleMode() error {
handler = s.trackStats(handler)
s.handler = handler
s.fastServer = &fasthttp.Server{
Name: s.getServerName(serverCfg),
Handler: s.handler,
ReadTimeout: serverCfg.ReadTimeout,
WriteTimeout: serverCfg.WriteTimeout,
IdleTimeout: serverCfg.IdleTimeout,
MaxConnsPerIP: serverCfg.MaxConnsPerIP,
MaxRequestsPerConn: serverCfg.MaxRequestsPerConn,
CloseOnShutdown: true,
// 高并发优化配置
Concurrency: serverCfg.Concurrency,
ReadBufferSize: serverCfg.ReadBufferSize,
WriteBufferSize: serverCfg.WriteBufferSize,
ReduceMemoryUsage: serverCfg.ReduceMemoryUsage,
}
s.fastServer = s.createFastServer(serverCfg, s.handler)
s.running = true
@ -562,21 +576,8 @@ func (s *Server) startVHostMode() error {
// 使用 Servers[0] 配置(迁移后 Server 字段为空)
serverCfg := &s.config.Servers[0]
s.fastServer = &fasthttp.Server{
Name: s.getServerName(serverCfg),
Handler: s.handler,
ReadTimeout: serverCfg.ReadTimeout,
WriteTimeout: serverCfg.WriteTimeout,
IdleTimeout: serverCfg.IdleTimeout,
MaxConnsPerIP: serverCfg.MaxConnsPerIP,
MaxRequestsPerConn: serverCfg.MaxRequestsPerConn,
CloseOnShutdown: true,
// 高并发优化配置
Concurrency: serverCfg.Concurrency,
ReadBufferSize: serverCfg.ReadBufferSize,
WriteBufferSize: serverCfg.WriteBufferSize,
ReduceMemoryUsage: serverCfg.ReduceMemoryUsage,
}
s.fastServer = s.createFastServer(serverCfg, s.handler)
s.running = true
@ -675,16 +676,8 @@ func (s *Server) startMultiServerMode() error {
h = s.trackStats(h)
// 创建 fasthttp.Server
fastSrv := &fasthttp.Server{
Name: s.getServerName(serverCfg),
Handler: h,
ReadTimeout: serverCfg.ReadTimeout,
WriteTimeout: serverCfg.WriteTimeout,
IdleTimeout: serverCfg.IdleTimeout,
MaxConnsPerIP: serverCfg.MaxConnsPerIP,
MaxRequestsPerConn: serverCfg.MaxRequestsPerConn,
CloseOnShutdown: true,
}
fastSrv := s.createFastServer(serverCfg, h)
// 检查 SSL 配置
if serverCfg.SSL.Cert != "" && serverCfg.SSL.Key != "" {