如何在Ubuntu上调整Apache性能
导读:Ubuntu 上 Apache 性能调优实操指南 一 基线检查与模块准备 更新系统与软件包,保持最新性能修复与安全补丁:sudo apt update && sudo apt full-upgrade。 启用关键性能相关模...
Ubuntu 上 Apache 性能调优实操指南
一 基线检查与模块准备
- 更新系统与软件包,保持最新性能修复与安全补丁:sudo apt update & & sudo apt full-upgrade。
- 启用关键性能相关模块:sudo a2enmod deflate expires headers cache cache_disk(按需启用)。
- 禁用不需要的模块以减少攻击面与资源占用:sudo a2dismod module_name。
- 备份当前配置:sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak。
- 修改后语法检查并重启:sudo apache2ctl configtest & & sudo systemctl restart apache2。
- 配置文件结构要点:全局配置在**/etc/apache2/apache2.conf**,模块在**/etc/apache2/mods-enabled/,站点在/etc/apache2/sites-enabled/**。
二 选择并配置合适的 MPM
- 三种常见 MPM 的取舍:
- prefork:兼容性好(如非线程安全 PHP),但内存占用高。
- worker:线程化,资源占用更优,需线程安全环境。
- event:事件驱动,适合高并发长连接场景,内存效率最佳。
- 切换示例(以 event 为例):sudo a2dismod mpm_prefork & & sudo a2enmod mpm_event & & sudo systemctl restart apache2。
- 并发参数建议(需结合内存与压测微调):
- prefork(示例):StartServers 5、MinSpareServers 5、MaxSpareServers 10、ServerLimit 256、MaxRequestWorkers 256、MaxRequestsPerChild 4000。
- event/worker(示例):StartServers 2、MinSpareThreads 25、MaxSpareThreads 75、ThreadLimit 64、ThreadsPerChild 25、MaxRequestWorkers 150、MaxConnectionsPerChild 0。
- 计算 MaxRequestWorkers 的简易方法:
- 估算每个进程/线程占用内存(含应用栈)为M_MB,可用内存为RAM_MB,预留**20%**给系统与其他服务,则上限约为:MaxRequestWorkers ≈ (RAM_MB × 0.8) ÷ M_MB。
- 例如:可用内存 8 GB、每进程约 50 MB,则上限约 (8192×0.8)÷50 ≈ 131,可先设为 128 并压测验证。
三 网络与内容交付优化
- 启用持久连接与合理超时:
- KeepAlive On、MaxKeepAliveRequests 100、KeepAliveTimeout 2–5(繁忙站点建议 2–3 秒)。
- Timeout 30(避免过长等待占用连接)。
- 启用压缩减少传输体积:sudo a2enmod deflate,常见配置:
- AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/x-javascript。
- 浏览器与代理缓存:
- sudo a2enmod expires,在虚拟主机设置:
- ExpiresActive On,ExpiresByType text/css “access plus 1 month”,ExpiresByType image/png “access plus 1 year”。
- 页面级缓存:在 或 中加入 Header set Cache-Control “public, max-age=31536000”。
- sudo a2enmod expires,在虚拟主机设置:
- 静态资源建议由 CDN 分发,进一步降低源站压力与首包时间。
四 监控验证与持续调优
- 启用状态页定位瓶颈:sudo a2enmod status,在配置中加入:
- < Location “/server-status”> SetHandler server-status; Require local ,访问 http://服务器IP/server-status 查看 Busy/Idle workers、Total Accesses 等指标。
- 日志与系统监控:
- 降低日志开销:LogLevel warn;使用 logrotate 管理日志滚动,避免磁盘与 I/O 压力。
- 资源监控:htop、sar、netstat 观察 CPU、内存、连接数、等待 I/O。
- 基准测试与闭环:
- 使用 ab(Apache Bench)或 JMeter 进行压测,例如:ab -n 10000 -c 200 http://你的站点/,结合状态页与监控指标逐步微调 MaxRequestWorkers、KeepAliveTimeout、Timeout 等参数。
五 高并发与扩展方案
- 在 Apache 前部署 HAProxy/Nginx 作为反向代理/负载均衡,将流量分发到多台后端 Apache 或应用节点,提升整体吞吐与可用性。
- 在单台或多台后端之间使用 mod_proxy_balancer 做负载均衡:
- < Proxy balancer://mycluster> BalancerMember http://backend1:80 BalancerMember http://backend2:80 ProxyPass / balancer://mycluster。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上调整Apache性能
本文地址: https://pptw.com/jishu/764543.html
