Apache侧优化要点
httpd -V 或 httpd -l。event 在高并发下能显著减少线程/进程占用与连接开销。KeepAlive On,MaxKeepAliveRequests 100,KeepAliveTimeout 5(按业务 RTT 调整,过大会占用连接)。StartServers 5、MinSpareServers 5、MaxSpareServers 10、MaxRequestWorkers 150(旧版为 MaxClients)、MaxConnectionsPerChild 0/10000+(按内存泄漏风险与稳定性取舍)。应用侧连接池配置
initialSize=5~10、minIdle≈initialSize、maxIdle≈minIdle~2×minIdle、maxTotal(最大活动连接,≤数据库上限)。maxWaitMillis=3000~10000(获取连接的最大等待时间,避免线程无限阻塞)。validationQuery=SELECT 1(MySQL),建议开启 testWhileIdle=true,并设置 timeBetweenEvictionRunsMillis=60000~120000、minEvictableIdleTimeMillis=1800000(约30分钟)以定期清理失效/陈旧连接。removeAbandonedOnBorrow/OnMaintenance=true、removeAbandonedTimeout=180(秒)、logAbandoned=true,帮助定位未关闭连接。数据库侧优化
max_connections(示例 500~1000,视内存与实例规格而定),并评估 max_user_connections、wait_timeout(释放长时间空闲连接)。innodb_buffer_pool_size(常设为物理内存的较大比例)、innodb_log_file_size、innodb_flush_log_at_trx_commit(权衡一致性与性能);PostgreSQL 的 shared_buffers(常设为总内存的约 25%)、work_mem、effective_cache_size 等。容量规划与监控
avg_mem,预留系统 500MB~1GB,可用内存 usable_mem,则理论最大并发连接数约为 floor(usable_mem / avg_mem);据此设置 MaxRequestWorkers/MaxClients,并留有余量应对峰值。常见问题与快速排查
max_connections 与连接池 maxTotal,并开启连接有效性校验与泄漏回收。maxWaitMillis、慢查询与索引缺失;必要时引入 负载均衡 与读写分离。