温馨提示×

Ubuntu Apache2性能如何提升

小樊
43
2025-12-09 01:58:59
栏目: 智能运维

Ubuntu 上 Apache2 性能提升实操指南

一 基线评估与监控

  • 启用状态页定位瓶颈:执行 sudo a2enmod status,在虚拟主机或全局配置中加入 <Location “/server-status”> SetHandler server-status Require local 访问 http://服务器IP/server-status 查看 Busy/Idle workers、每秒请求数 等关键指标。配合 htop、sar 观察 CPU、内存、I/O 使用率,先建立优化前的基线数据再逐项调整。

二 核心优化步骤

  • 选择高效 MPM
    • Prefork:兼容非线程安全模块(如部分旧版 PHP),稳定但内存占用高。
    • Worker/Event:线程/事件驱动,适合高并发,内存更省。若使用线程安全版本的 PHP-FPM,优先 mpm_event。切换示例:sudo a2dismod mpm_prefork && sudo a2enmod mpm_event && sudo systemctl restart apache2。
  • 开启持久连接与压缩
    • KeepAlive On、MaxKeepAliveRequests 100、KeepAliveTimeout 2(繁忙站点建议 1–5 秒)。
    • 启用压缩:sudo a2enmod deflate;为文本类资源启用压缩(如 text/html、text/css、application/javascript)。
  • 启用缓存与静态资源过期
    • 启用 mod_expires 设置 Cache-Control/Expires,提升浏览器与反向代理缓存命中率。
    • 启用 mod_cache/mod_disk_cache 做服务器端页面/对象缓存(可选,视业务与后端动态性而定)。
  • 优化超时与日志
    • Timeout 30(过高会占用连接更久)。
    • LogLevel warn,减少磁盘 I/O 与日志开销。
  • 启用 HTTP/2
    • ports.conf 使用:Listen 443 ssl http2,并正确配置 SSL 证书,提升并发与首包时间表现。

三 关键参数示例与计算

  • 计算前提与方法
    • 估算每个 worker/进程 的内存占用(RSS),用 free -m 观察常态占用;结合可用内存与安全余量,确定 MaxRequestWorkers/MaxClients 上限,避免 OOM 与频繁换页。
  • Prefork 示例(非线程安全 PHP 常用) StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 256 MaxRequestWorkers 256 MaxConnectionsPerChild 250 说明:该示例来自生产常见做法,数值需按内存与压测结果微调。
  • 事件/Worker 思路(需线程安全后端)
    • 关注 ThreadsPerChild、MaxRequestWorkers 等;原则是“在内存与后端可承受的前提下提高并发,但避免把连接全部占满”。
  • 其它通用参数
    • Timeout 30
    • KeepAlive On、MaxKeepAliveRequests 100、KeepAliveTimeout 2
    • LogLevel warn 以上参数与示例可作为起点,务必结合压测与监控逐步微调。

四 架构与运维层面的优化

  • 静态资源交付
    • 使用 CDN 缓存图片、视频、下载与静态文件,降低源站压力与跨地域时延。
  • 反向代理与负载均衡
    • Apache 前放置 Nginx/HAProxy 做反向代理与负载均衡,横向扩展后端实例,平滑应对流量峰值。
  • 模块与功能精简
    • 禁用不需要的模块(如 a2dismod module_name),减少攻击面与初始化开销。
  • 日志与磁盘 I/O
    • 使用 logrotate 管理日志轮转,避免日志过大影响性能与磁盘空间。
  • 数据库与应用层
    • 优化 SQL 查询、索引与连接池;启用应用层缓存(如对象缓存),降低后端数据库压力。

五 快速检查清单

  • 已启用 mpm_event/mpm_worker(或确认 prefork 为必需),并完成切换与重启。
  • KeepAlive、压缩、缓存、过期、HTTP/2 已正确开启并验证生效。
  • 超时与日志级别已按建议调整,状态页可访问且指标正常。
  • 已做压测(如 ab、wrk、jmeter)与监控基线,关键参数按监控结果微调。
  • 静态资源走 CDN,高并发场景前置 Nginx/HAProxy 或做负载均衡。

0