XAMPP 默认 MaxClients 为150,易导致连接排队或超时,必须配合 ServerLimit、StartServers 等参数协同调优,并确认启用 httpd-mpm.conf 及使用 stop/start 重启,否则配置无效。

XAMPP 默认的 MaxClients 是 150,实际压测或前端资源密集型页面(如 Vue/React 单页)很容易触发连接排队、请求超时或 Chrome 显示 net::ERR_CONNECTION_REFUSED。必须改,但不能只调 MaxClients —— 否则 Apache 启动失败或配置被忽略。
确认当前 MPM 模式和配置是否生效
Apache 在 XAMPP 中默认使用 prefork 模式(Windows/macOS/Linux 均如此),这点必须先验证,否则改错配置块毫无意义:
- 打开终端或命令提示符,运行:
httpd -l(Linux/macOS)或xampp/apache/bin/httpd.exe -l(Windows),输出中必须含prefork.c - 检查
httpd.conf是否已启用 MPM 配置:搜索Include conf/extra/httpd-mpm.conf,确保前面没有# - 若未启用,取消注释后保存,否则后续所有修改都无效
ServerLimit 必须显式设置且放在 MaxClients 前
在 conf/extra/httpd-mpm.conf 的 <IfModule mpm_prefork_module> 块内,ServerLimit 是硬性前提 —— 它定义了 MaxClients 的上限,且 Apache 要求它必须出现在 MaxClients 之前,否则启动时静默忽略该值。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
ServerLimit必须 ≥ 你计划设的MaxClients,例如要设MaxClients 1000,就得先写ServerLimit 1000 - Windows 下该值最大支持 20000,但 XAMPP for Windows 实际受系统句柄限制,建议 ≤ 2000
- 不要设成远高于物理内存允许的值:每进程约占用 5–15 MB 内存,1000 连接 ≈ 8–12 GB 内存压力(仅 Apache 进程)
关键参数组合与常见错误现象
只改 MaxClients 不调整配套参数,会导致空闲连接堆积、子进程失控或响应变慢:
-
StartServers:启动时创建的子进程数,建议设为MaxClients的 1%–5%,如 1000 连接可设为10 -
MinSpareServers和MaxSpareServers应保持差值合理(如 5 和 15),避免频繁 fork/kill 进程;设得太小会卡顿,太大则浪费内存 -
MaxRequestsPerChild 0可以保留,但生产环境建议设为1000防止长期运行的内存泄漏累积 - 改完必须用
apachectl stop && apachectl start(不是restart),否则 prefork 模式下新ServerLimit不加载 - 改完后执行
ps aux | grep httpd | wc -l(Linux/macOS)或任务管理器看进程数,验证是否接近预期
别忘了 KeepAlive 配合调优
即使 MaxClients 提上去了,如果 KeepAliveTimeout 还是默认的 5 秒、MaxKeepAliveRequests 只有 100,浏览器加载 30+ 个 JS/CSS/图片时仍会反复建连,抵消并发提升效果。
- 在
httpd.conf或httpd-mpm.conf中确认:KeepAlive On - 设为:
MaxKeepAliveRequests 250(单连接最多复用请求数)、KeepAliveTimeout 8(连接空闲 8 秒后关闭) - 用 Chrome DevTools → Network → 看请求的
Connection值是否为keep-alive,并观察复用连接数是否上升
真正卡住的往往不是 MaxClients 数字本身,而是 ServerLimit 缺失、httpd-mpm.conf 未启用、或重启方式错误 —— 这三处漏掉任一,改再多次都没用。


















