Ubuntu下如何提升Apache性能
小樊
44
2025-12-17 22:38:08
Ubuntu下提升Apache性能的实用步骤
一 基线检查与模块准备
- 更新系统与软件包,保持 Apache/PHP 为较新版本,获取性能修复与安全改进。
- 启用关键性能相关模块:mod_deflate(压缩)、mod_expires(过期与缓存控制)、mod_cache / mod_cache_disk(磁盘缓存)、mod_rewrite(按需)。
- 示例命令:
- sudo apt update && sudo apt upgrade
- sudo a2enmod deflate expires cache cache_disk rewrite && sudo systemctl restart apache2
- 说明:压缩与缓存能显著降低传输体积与后端压力;按需启用模块可减少不必要的开销。
二 选择并调优MPM多路复用模块
- 模块选择要点:
- prefork:进程模型、非线程安全,适配传统模块(如某些 mod_php),稳定但内存占用高。
- worker / event:线程/事件模型,适合高并发,资源利用更高效;event 在高并发长连接场景更优。
- 切换示例(Ubuntu 22.04+):
- 查看与切换:sudo a2dismod mpm_prefork && sudo a2enmod mpm_event && sudo systemctl restart apache2
- 参数调优思路(示例为 mpm_event,需结合内存与压测微调):
- StartServers:启动时子进程数(如:4)
- MinSpareThreads / MaxSpareThreads:空闲线程池(如:25 / 75)
- ThreadsPerChild:每子进程线程数(如:25)
- MaxRequestWorkers:同时可服务的最大客户端连接(如:150,繁忙站点可更高)
- MaxConnectionsPerChild:子进程生命周期内处理请求数,用于回收内存碎片(如:1000)
- 若必须使用 prefork(如非线程安全模块场景),可参考:
- StartServers 5;MinSpareServers 5;MaxSpareServers 10;MaxRequestWorkers 150(或按内存与压测上调);MaxConnectionsPerChild 250~3000
- 提示:并发上限受 内存/CPU/应用类型 约束,务必以压测结果为准。
三 连接、压缩与缓存策略
- 启用并优化长连接:
- KeepAlive On
- MaxKeepAliveRequests 100(每连接最大请求数)
- KeepAliveTimeout 2(繁忙站点建议 1–5 秒,避免占用连接过久)
- 启用压缩(减少传输体积):
- 启用模块:sudo a2enmod deflate
- 示例:AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/x-javascript
- 启用浏览器与磁盘缓存:
- 过期时间:sudo a2enmod expires
- ExpiresActive On
- ExpiresByType image/jpg “access plus 1 month”
- ExpiresByType text/css “access plus 1 week”
- ExpiresByType application/javascript “access plus 1 week”
- 磁盘缓存:sudo a2enmod cache cache_disk
- CacheRoot “/var/cache/apache2/mod_cache_disk”
- CacheEnable disk /
- CacheDirLevels 2;CacheDirLength 1
- CacheIgnoreHeaders Set-Cookie(按场景决定是否忽略)
- 说明:长连接减少握手开销;压缩与缓存显著降低后端负载与时延。
四 超时与资源控制
- 合理设置超时:
- Timeout 5–15(静态资源为主可更低;避免过大导致占用连接)
- 限制并发与进程生命周期:
- 在对应 MPM 段内设置 MaxRequestWorkers / MaxClients 与 MaxConnectionsPerChild,既控并发又定期回收资源,防止内存泄漏与碎片化。
- 减少不必要开销:
- HostnameLookups Off(避免 DNS 反向解析)
- 关闭目录浏览:Options -Indexes
- 如无需 .htaccess,在 中 AllowOverride None(减少文件系统检查)
- 说明:这些设置能降低 CPU 与 I/O 消耗,提升稳定与吞吐。
五 监控、压测与扩展
- 变更后务必进行压测与监控:
- 基准测试:ab(Apache Bench)、wrk、jmeter;观察 RPS、P95/P99 延迟、错误率
- 资源监控:htop、vmstat、netstat/sar;关注 CPU、内存、连接数、磁盘 I/O
- 逐步调参:一次只调整一个参数,记录基线→变更→复测,避免“拍脑袋”设置。
- 架构扩展:当单机到达瓶颈,考虑反向代理/负载均衡(如 mod_proxy_balancer)、引入 CDN 承载静态资源、或对动态层做缓存与应用层拆分。