一、Apache的MPM模块
Apache通过多处理模块(MPM)来决定如何处理网络请求。2010年常用的两种模式:
- Prefork:非线程型,每个子进程处理一个请求。稳定性高,但内存消耗大,适合老式PHP应用(如没有线程安全版本的PHP)。
- Worker:混合多进程多线程模式,每个子进程包含多个线程。内存占用低,并发能力强,但要求PHP以线程安全方式运行。
二、如何选择MPM模式
如果你的PHP应用是mod_php方式集成且非线程安全(2010年大多数共享主机如此),必须使用Prefork。如果使用FastCGI(如PHP-FPM)方式运行PHP,可以选择Worker或event模式,获得更好的并发性能。
三、Prefork模式关键参数
StartServers 10
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 1000
关键说明:
- MaxClients是最重要的参数,决定最大并发连接数。每个子进程约占用20-40MB内存,需要根据服务器内存计算合理值。例如2GB内存的服务器,MaxClients建议设为100-150。
- MaxRequestsPerChild设置为非0值,防止内存泄漏累积导致进程崩溃。
四、Worker模式关键参数
StartServers 2
MaxClients 500
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
Worker模式下,最大并发数 = MaxClients = StartServers × ThreadsPerChild 的组合。线程比进程轻量得多,因此同样内存下可支撑更高并发。
五、其他优化建议
- 开启KeepAlive:减少TCP握手开销,但要合理设置KeepAliveTimeout(5秒左右),避免连接长期占用。
- 压缩输出:启用mod_deflate对HTML/CSS/JS进行gzip压缩,减少带宽占用约60%。
- 静态文件缓存:使用mod_expires为图片、CSS、JS设置长期缓存头。
- 关闭不必要的模块:注释掉用不到的LoadModule,减少内存占用和安全风险。
六、监控与验证
调优后使用ab(Apache Bench)工具进行压力测试:ab -n 1000 -c 50 http://your-site.com/。重点关注Requests per second和Time per request两个指标,对比调优前后的变化。
七、总结
Apache默认配置适合开发环境,生产环境必须根据业务流量和服务器资源进行定制化调优。2010年我们为一家电商客户将MaxClients从默认25提升到120,并启用gzip压缩后,网站在双11期间成功承载了日常5倍的访问量。
本文关键词:Apache,Web服务器,性能调优,MPM,高并发
相关推荐
技术干货 · 2026-07-22
端侧小模型与云端大模型协同架构设计
技术干货 · 2026-05-20
AIOps全面普及:2026年企业智能运维落地全景
技术干货 · 2026-05-12