apache并发连接与超时需协同调优:启用event mpm模块,按硬件配置startservers、threadsperchild、maxrequestworkers等参数;分层设置timeout、keepalivetimeout、maxkeepaliverequests及requestreadtimeout;同步提升系统ulimit和内核参数。

Apache 的并发连接数和超时时间必须协同调整,单改一项容易引发资源耗尽、504 错误或连接堆积。核心是匹配业务类型(如 API 接口、文件上传、长任务)、服务器硬件(CPU/内存)和后端响应特性。
一、确认并切换到 event MPM 模块
event 是当前高并发场景的首选模块,它用少量线程处理大量连接,尤其适合 Keep-Alive 和空闲连接管理:
- 检查当前模块:
httpd -V | grep MPM或apache2ctl -V | grep MPM - 启用 event:在 Debian/Ubuntu 上取消
/etc/apache2/mods-available/mpm_event.conf注释;RHEL/CentOS 修改/etc/httpd/conf.modules.d/00-mpm.conf,注释掉 prefork/worker,保留 event 行 - 重启前验证:
apachectl configtest
二、调优并发连接参数(以 event 为例)
编辑 MPM 配置文件(非主 httpd.conf),按 4 核 / 16GB 内存典型配置参考:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- StartServers 4:启动即创建 4 个子进程,建议设为 CPU 核心数
- MinSpareThreads 25、MaxSpareThreads 75:空闲线程范围,避免频繁启停
- ThreadsPerChild 50:每个子进程开 50 个线程,值过高易触发线程切换开销
-
MaxRequestWorkers 400:全局最大并发请求数,必须 ≤
ServerLimit × ThreadsPerChild - ServerLimit 8:最大子进程数,与 MaxRequestWorkers 保持一致(此处 8×50=400)
⚠️ 注意:这些值需根据内存测算——每个 Apache 线程约占用 5–15MB,400 并发线程至少预留 2–4GB 内存给 Apache。
三、精调超时相关指令
超时不是越长越好,而是要分层控制,防慢速攻击又保合理业务时长:
-
Timeout 10:客户端请求头/体传输总时限,对普通 Web 页面设 5–10 秒;若存在大文件上传,可局部提高(如
<location> Timeout 300 </location>) - KeepAlive On + KeepAliveTimeout 2:启用长连接,但空闲等待仅 2 秒,快速释放资源
- MaxKeepAliveRequests 150:单连接最多服务 150 个请求,兼顾复用与防单连接霸占
- RequestReadTimeout header=15,MinRate=500 body=30,MinRate=500:防慢速 HTTP 攻击,要求头 15 秒内传完、体每秒至少 500 字节
四、同步检查系统级限制
Apache 配置再高,也会被系统卡住:
- 查看当前限制:
ulimit -n(文件描述符数),默认常为 1024,万级并发至少设为 65536 - 临时提升:
ulimit -n 65536;永久生效需修改/etc/security/limits.conf,加两行:www-data soft nofile 65536www-data hard nofile 65536(Debian/Ubuntu)或apache(RHEL/CentOS) - 确认内核参数:
sysctl net.core.somaxconn建议 ≥ 65535,net.ipv4.ip_local_port_range建议设为1024 65535










