Apache性能优化需从MPM调优、浏览器缓存、Gzip压缩、磁盘缓存及模块精简五方面入手:1.启用event MPM并调参;2.配置Expires与Cache-Control头;3.启用mod_deflate压缩文本资源;4.配置mod_cache_disk缓存动态内容;5.禁用非必要模块降低开销。

如果您正在运行 Apache 服务器,但发现页面响应缓慢、并发连接数受限或静态资源加载耗时过长,则问题很可能源于默认配置未针对实际负载进行调优。以下是围绕并发处理、缓存机制与内容压缩三大核心维度的实战配置方法:
一、调整多处理模块(MPM)参数以提升并发能力
Apache 的并发处理能力由所启用的多处理模块(MPM)决定,不同 MPM 适用于不同硬件与流量特征。错误的 MPM 类型或参数设置将直接导致连接排队、CPU 空转或内存耗尽。
1、确认当前启用的 MPM:执行 httpd -V | grep MPM 或 apache2ctl -V | grep MPM 查看输出结果。
2、若系统为类 Unix 环境且内存充足(≥4GB),推荐切换至 event MPM:执行 sudo a2dismod mpm_prefork mpm_worker && sudo a2enmod mpm_event(Debian/Ubuntu);CentOS/RHEL 使用 sudo yum remove httpd-manual && sudo yum install httpd-event 并修改 /etc/httpd/conf.modules.d/00-mpm.conf。
3、编辑 MPM 配置文件(通常为 /etc/apache2/mods-available/mpm_event.conf 或 /etc/httpd/conf.modules.d/00-mpm.conf),设置以下关键参数:
• StartServers 3
• MinSpareThreads 25
• MaxSpareThreads 75
• ThreadsPerChild 25
• MaxRequestWorkers 400
• MaxConnectionsPerChild 10000
4、重启服务使配置生效:sudo systemctl restart apache2(Debian/Ubuntu)或 sudo systemctl restart httpd(RHEL/CentOS)。
二、启用并精细化配置浏览器端缓存
通过设置 Expires 和 Cache-Control 响应头,可让客户端复用本地已缓存的静态资源,避免重复请求服务器,显著降低带宽消耗与后端压力。
1、启用 mod_expires 与 mod_headers 模块:sudo a2enmod expires headers。
2、在虚拟主机配置段或主配置文件中添加如下指令:
• 启用缓存控制:ExpiresActive On
• 设置图片类资源缓存一年:ExpiresByType image/jpeg "access plus 1 year"
• 设置 CSS/JS 缓存一个月:ExpiresByType text/css "access plus 1 month"
• 设置 JavaScript 应用脚本缓存一个月:ExpiresByType application/javascript "access plus 1 month"
• 设置默认缓存两小时:ExpiresDefault "access plus 2 hours"
3、补充 Cache-Control 头强化兼容性,在同一配置块中添加:
• Header append Cache-Control "public"
• Header append Vary "Accept-Encoding"
4、验证响应头是否生效:使用 curl 命令检查某 CSS 文件响应:curl -I https://yoursite.com/style.css | grep -i "cache\|expires"。
三、配置 Gzip 内容压缩以减少传输体积
对文本类响应体启用实时 Gzip 压缩,可在不改变内容语义的前提下大幅缩减网络传输量,尤其对 HTML、CSS、JS 等资源效果显著,典型压缩率可达 60–80%。
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
1、启用 mod_deflate 模块:sudo a2enmod deflate。
2、在配置中添加
• 设置压缩强度为 6(平衡 CPU 开销与压缩率):DeflateCompressionLevel 6
• 启用 HTML、纯文本、XML 压缩:AddOutputFilterByType DEFLATE text/html text/plain text/xml
• 启用样式表与脚本压缩:AddOutputFilterByType DEFLATE text/css application/javascript
• 启用 JSON 与 RSS 压缩:AddOutputFilterByType DEFLATE application/json application/rss+xml
3、排除已压缩格式(如图片、PDF)以避免无效处理:SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|pdf|zip|exe|avi|mov|mp4|mp3|wav|swf|flv)$ no-gzip dont-vary
4、重启 Apache 并使用在线工具(如 gzipWTF)或 curl + -H 'Accept-Encoding: gzip' 测试响应是否含 gzip 编码头及压缩内容。
四、启用服务器端磁盘缓存以加速动态内容响应
对于更新频率较低的动态页面(如博客文章、产品详情页),通过 mod_cache + mod_disk_cache 将生成结果缓存至磁盘,可绕过 PHP/Python 等后端执行环节,直接返回缓存副本,极大缩短响应时间。
1、启用所需模块:sudo a2enmod cache cache_disk。
2、创建缓存目录并赋权:sudo mkdir -p /var/cache/apache2/mod_disk_cache && sudo chown www-data:www-data /var/cache/apache2/mod_disk_cache(Debian/Ubuntu);RHEL/CentOS 使用 apache:apache 用户组。
3、在主配置或虚拟主机中添加缓存策略:
• 启用磁盘缓存:CacheEnable disk /
• 设置缓存根路径:CacheRoot /var/cache/apache2/mod_disk_cache
• 设置缓存目录层级:CacheDirLevels 2
• 设置缓存目录名长度:CacheDirLength 1
• 设置最大缓存有效期(秒):CacheMaxExpire 86400
• 设置默认缓存因子:CacheLastModifiedFactor 0.1
4、限制缓存范围,仅对特定路径启用(例如 /blog/ 下的文章):CacheIgnoreURLSessionIdentifiers phpSESSID,并在 Location 块中指定 CacheEnable disk。
五、禁用非必要模块以降低内存与安全风险
Apache 默认加载大量模块,其中许多与当前业务无关。保留未使用的模块不仅增加内存占用,还扩大攻击面,影响启动速度与运行效率。
1、列出当前已加载模块:httpd -M(RHEL/CentOS)或 apache2ctl -M(Debian/Ubuntu)。
2、识别并禁用常见冗余模块:sudo a2dismod status info autoindex imap userdir(Debian/Ubuntu);RHEL/CentOS 可注释 /etc/httpd/conf.modules.d/ 目录下对应 .conf 文件中的 LoadModule 行。
3、特别注意保留依赖模块:例如 mod_rewrite 依赖 mod_alias,禁用前需确认无功能冲突;mod_ssl 和 mod_php(或 mod_proxy_fcgi)必须保持启用。
4、执行语法检查:sudo apachectl configtest,确认无报错后再重启服务。


















