010-62840085 msh@sunitschina.cn 全国30+城市服务网络 · 1000+技术团队

Apache Web服务器性能调优:从Prefork到Worker模式选择

旭日神州技术团队 · 2010年07月12日 · 技术干货

一、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,高并发
← 上一篇(更新)
2010年移动互联网起步:企业必须关注的三大趋势
下一篇(更早) →
案例复盘:某制造企业OA办公系统开发全过程

相关推荐

准备好开启您的数字化转型之旅了吗?

1000+技术团队 · 5000+企业客户 · 15年行业经验,期待与您合作