温馨提示×

centos如何优化apache性能

小樊
45
2026-09-15 01:57:56
栏目: 智能运维

在 CentOS 上优化 Apache(httpd)性能,通常可以从系统层面、Apache 配置、模块选择、缓存与压缩、监控调优几个方面入手。下面按实用优先级说明。


一、系统层面优化(CentOS)

1. 调整内核参数(/etc/sysctl.conf)

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
fs.file-max = 1000000

执行:

sysctl -p

2. 提高文件描述符限制

# /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000

二、Apache MPM 模式选择(最重要)

查看当前 MPM

httpd -V | grep MPM

推荐方案

  • CentOS 7+ 默认:prefork / worker / event
  • 高并发首选:event(PHP 用 php-fpm)

修改 MPM 配置

vi /etc/httpd/conf.modules.d/00-mpm.conf

示例(event):

LoadModule mpm_event_module modules/mod_mpm_event.so

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild 10000
</IfModule>

三、Apache 核心性能参数

1. 关闭不常用模块

httpd -M

禁用示例:

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

2. 调整超时与长连接

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

四、启用缓存与压缩

1. 开启 gzip 压缩

LoadModule deflate_module modules/mod_deflate.so

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

2. 开启浏览器缓存

LoadModule expires_module modules/mod_expires.so

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

五、PHP 场景优化(非常重要)

推荐:Apache + PHP-FPM

yum install php-fpm

Apache 配置:

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

六、静态资源与反向代理

使用 mod_cache(可选)

LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so

CacheEnable disk /
CacheRoot /var/cache/httpd

前端建议

  • 静态资源走 Nginx / CDN
  • Apache 只处理动态请求

七、监控与压测

查看状态

httpd -S
systemctl status httpd

压测工具

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

八、常见误区

❌ 盲目调大 MaxRequestWorkers
❌ prefork + PHP 模块(内存爆炸)
❌ 开启所有模块
✅ event + php-fpm
✅ 动静分离


如果你能提供:

  • CentOS 版本
  • Apache 版本
  • 是否使用 PHP / MySQL
  • 并发量级别

我可以给你一套针对你服务器的具体配置

0