温馨提示×

怎样优化linux apache配置

小樊
46
2026-10-29 00:50:12
栏目: 智能运维

优化 Linux 下 Apache(httpd)配置,通常从性能、安全、资源管理、缓存与压缩几个方面入手。下面按“实用优先”的方式给你一套常见优化方案(以 Apache 2.4 为例)。


一、基础性能优化

1. 选择合适的 MPM(多路处理模块)

Apache 2.4 常见 MPM:

  • prefork:稳定,但内存占用高(适合老应用、无线程安全库)
  • worker:线程+进程,内存更省
  • event:最佳性能(推荐,高并发场景)

查看当前 MPM:

apachectl -V | grep MPM

切换 MPM(以 CentOS/RHEL 为例):

# 编辑配置
vim /etc/httpd/conf.modules.d/00-mpm.conf

启用 event:

LoadModule mpm_event_module modules/mod_mpm_event.so

2. MPM 参数调优(示例:event)

<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild 10000
</IfModule>

说明:

  • MaxRequestWorkers 控制最大并发
  • MaxConnectionsPerChild 防止内存泄漏

二、连接与超时优化

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

说明:

  • 关闭长连接或设置较短 timeout,可减少资源占用
  • 静态资源可适度提高 MaxKeepAliveRequests

三、开启压缩(节省带宽)

启用 mod_deflate

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript
    AddOutputFilterByType DEFLATE application/json
</IfModule>

四、启用缓存(提升响应速度)

1. 浏览器缓存(mod_expires)

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 30 days"
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
</IfModule>

2. 磁盘缓存(可选)

CacheEnable disk /
CacheRoot /var/cache/apache2

五、关闭不必要模块

减少攻击面和资源占用:

# 查看已加载模块
apachectl -M

禁用示例:

# LoadModule status_module modules/mod_status.so
# LoadModule autoindex_module modules/mod_autoindex.so

六、安全相关优化

1. 隐藏版本信息

ServerTokens Prod
ServerSignature Off

2. 限制目录访问

<Directory /var/www/html>
    Options -Indexes
    AllowOverride All
    Require all granted
</Directory>

七、日志优化

避免日志拖慢性能:

LogLevel warn

高并发时可:

  • 关闭 access_log
  • 或使用 rotatelogs 分割日志

八、系统层面配合

1. 文件描述符

ulimit -n 65535

2. 内核参数(/etc/sysctl.conf)

net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1

九、验证与重启

apachectl configtest
systemctl restart httpd

十、推荐工具

  • ab(Apache Bench)压测
  • htop / atop 看资源
  • mod_status(开启后访问 /server-status)

如果你愿意,我可以:

  • 针对 CentOS / Ubuntu 给具体配置文件
  • 根据你的 并发量 & 内存 帮你算参数
  • 结合 PHP / WordPress / 反向代理 场景优化

你目前 Apache 主要跑什么业务?

0 踩