maxrequestsperchild控制子进程处理请求数上限,达限时自动退出释放内存;设为0则永不回收,易致内存泄漏累积;小内存服务器建议30–100,中型服务500–2000,大型且无泄漏可设5000–10000,生产环境不推荐设0。

MaxRequestsPerChild 控制子进程的生命周期,决定它处理多少请求后自动退出并释放内存。
作用原理
Apache 启动后会派生多个子进程(prefork 模式)或线程(worker/event 模式),每个子进程独立响应请求。MaxRequestsPerChild 就是给每个子进程设一个“服务上限”:一旦累计处理请求数达到该值,父进程就会终止这个子进程,回收其占用的内存和句柄资源,再按需新建干净的子进程来接替。
设为 0 表示永不回收——子进程一直运行,即使空闲也不释放资源。这对高内存、低泄露风险的环境可能省开销;但若存在轻微内存泄漏(如 PHP 扩展或老旧模块),长期运行会导致单个进程内存持续增长,最终拖垮整机。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
为什么需要合理设置
- 防止内存缓慢爬升:尤其在 PHP、Perl 等嵌入式解释器环境下,常见小幅度内存累积,不回收就无法释放
- 避免 swap 被占满:某进程涨到 300MB 且长期驻留,多几个就吃光物理内存+swap
- 平衡稳定性与开销:设太小(如 10)会导致频繁启停进程,增加 fork 开销和 CPU 波动;设太大(如 0 或 100000)则失去内存兜底能力
推荐配置参考
没有绝对最优值,需结合服务器内存、负载特征和应用表现调整:
- 内存 ≤ 2GB 的小站:30~100(保守起见,强制定期清内存)
- 内存 4~8GB 的中型服务:500~2000(兼顾稳定与效率)
- 内存 ≥ 16GB 且确认无内存泄漏:5000~10000(减少进程调度频率)
- 生产环境不建议设为 0,除非有持续监控证明进程内存恒定且可控
配合检查与验证
改完配置后别只重启了事:
- 用
ps aux | grep httpd | wc -l观察进程总数是否趋于平稳(大幅波动可能回收过频) - 用
ps aux --sort=-%mem | head -10查看 top 几个 httpd 进程的 RSS 内存,连续观察几小时是否持续上涨 - 修改后观察 24 小时内 swap 使用率变化,下降明显说明生效
- 注意:Apache 2.4.9+ 中,该参数在部分 MPM 下已更名为 MaxConnectionsPerChild,查看当前模式用
httpd -V | grep MPM










