温馨提示×

怎样优化centos的apache性能

小樊
41
2026-09-02 22:14:24
栏目: 智能运维

在 CentOS 上优化 Apache(通常是 httpd)性能,可以从系统层面、Apache 配置、模块优化、缓存与压缩、以及架构层面几个方向入手。下面给出一套比较实用、可落地的优化方案。


一、系统层面优化(CentOS)

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

# 提高文件描述符限制
fs.file-max = 1000000

# TCP 连接优化
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

执行:

sysctl -p

2. 提高用户打开文件数

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

二、Apache 运行模式选择(非常重要)

CentOS 默认通常是 preforkworker

推荐方案

  • 静态内容多 / 高并发workerevent
  • 老 PHP 程序(非 PHP-FPM)prefork

查看当前 MPM:

httpd -V | grep -i mpm

切换到 event(CentOS 7+ 推荐):

yum install mod_http2
# 修改 /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so

三、Apache 核心配置优化

1. MPM 配置示例(event)

编辑:

vi /etc/httpd/conf.modules.d/00-mpm.conf
<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild 10000
</IfModule>

MaxRequestWorkers 不要超过内存承受范围


2. 关闭不必要的模块

# 查看已加载模块
httpd -M

常见可关闭:

  • mod_status(生产可关)
  • mod_userdir
  • mod_autoindex

四、开启缓存与压缩

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"
    ExpiresByType application/javascript "access plus 7 days"
</IfModule>

五、PHP 环境优化(如适用)

推荐:PHP-FPM + Apache

yum install php-fpm

Apache 配置:

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

PHP-FPM 调优:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

六、日志与访问优化

1. 减少日志写入

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

2. 使用异步日志(Apache 2.4+)

LogPipe |/usr/bin/rotatelogs logs/access_log 86400

七、使用缓存层(进阶)

  • 前端:Nginx 反代 + 静态缓存
  • 后端:Redis / Memcached
  • 页面:Varnish(高并发场景)

八、监控与压测

工具

ab -n 10000 -c 500 http://localhost/
htop
ss -ant | wc -l

九、最简优化清单(快速版)

✅ 使用 event MPM
✅ 开 gzip
✅ 开 expires
✅ 用 PHP-FPM
✅ 关无用模块
✅ 调内核参数


如果你愿意,可以告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • Apache 版本
  • 是否用 PHP / 什么业务(API / 网站 / 下载)

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

0