温馨提示×

apache centos如何优化

小樊
39
2026-09-30 02:59:17
栏目: 智能运维

在 CentOS 上使用 Apache(httpd) 进行优化,通常从 系统层面、Apache 配置、模块优化、缓存与静态资源、安全与监控 几个方面入手。下面给你一套实用可落地的优化方案(适用于 CentOS 7/8、Apache 2.4)。


一、系统层面优化(CentOS)

1. 关闭 SELinux(如非必要)

getenforce
setenforce 0
# 永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2. 调整文件描述符限制

ulimit -n 65535

永久生效:

cat >> /etc/security/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
EOF

3. 内核参数优化(/etc/sysctl.conf)

net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
sysctl -p

二、Apache(httpd)核心配置优化

配置文件位置:

  • CentOS 7:/etc/httpd/conf/httpd.conf
  • 虚拟主机:/etc/httpd/conf.d/*.conf

1. 多路复用模式(MPM)选择

Apache 2.4 推荐 event(高并发)

httpd -V | grep MPM

启用 event(CentOS 默认是 prefork):

vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
# 注释掉 prefork / worker

2. MPM 参数优化(event 示例)

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         64
    MaxSpareThreads        128
    ThreadsPerChild         64
    MaxRequestWorkers      512
    MaxConnectionsPerChild  10000
</IfModule>

说明:

  • MaxRequestWorkers ≈ 并发连接数
  • MaxConnectionsPerChild 防止内存泄漏

三、KeepAlive 与超时优化

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
Timeout 30

高并发场景:KeepAliveTimeout 不要太大(2–5 秒)


四、模块精简(非常重要)

禁用不必要的模块

vim /etc/httpd/conf.modules.d/00-base.conf

常见可禁用:

  • mod_status(生产可关)
  • mod_userdir
  • mod_autoindex
  • mod_negotiation(如不需要多语言)
# LoadModule autoindex_module modules/mod_autoindex.so

五、静态资源与缓存优化

1. 启用 gzip 压缩

vim /etc/httpd/conf.d/deflate.conf
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

2. 浏览器缓存

vim /etc/httpd/conf.d/cache.conf
<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>

六、PHP / 动态请求优化(如适用)

使用 PHP-FPM(强烈推荐)

yum install php-fpm -y
systemctl enable php-fpm

Apache 使用 proxy_fcgi:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

✅ 比 mod_php 性能更好、更稳定


七、日志优化(避免磁盘 IO 瓶颈)

减少日志量

CustomLog logs/access_log combined env=!dontlog
SetEnvIf Request_URI "\.(jpg|css|js|png)$" dontlog

或使用异步日志(Apache 2.4+)

TransferLog "|/usr/sbin/rotatelogs /var/log/httpd/access_%Y%m%d.log 86400"

八、防火墙与并发

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

九、监控与压测

查看 Apache 状态

systemctl status httpd
apachectl -t

压测工具

yum install httpd-tools -y
ab -n 10000 -c 500 http://localhost/

十、生产环境推荐架构(高性能)

用户 → Nginx(反向代理/静态)
        ↓
     Apache + PHP-FPM
        ↓
      MySQL / Redis

Nginx 处理静态 + HTTPS,Apache 专注动态


总结(最简优化清单)

✅ 使用 event MPM
✅ 启用 PHP-FPM
✅ 开启 gzip + 缓存
✅ 精简模块
✅ 调整超时与并发
✅ 系统参数优化


如果你能提供:

  • CentOS 版本
  • Apache 版本
  • 是否用 PHP / MySQL
  • 并发量(日 PV / QPS)

我可以给你 针对性配置模板。

0 踩