温馨提示×

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 / MaxClientsMaxConnectionsPerChild,既控并发又定期回收资源,防止内存泄漏与碎片化。
  • 减少不必要开销:
    • 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 承载静态资源、或对动态层做缓存与应用层拆分。

0