温馨提示×

怎样优化centos的apache

小樊
44
2026-09-27 03:15:57
栏目: 智能运维

优化 CentOS 上的 Apache(通常是 httpd)可以从系统层面、Apache 配置、模块、缓存、安全与监控几个方面来做。下面按实用优先级给你一套可落地的优化方案(适用于 CentOS 7/8 及 Rocky/Alma 等衍生系统)。


一、系统层面优化(基础但关键)

1. 调整内核与文件描述符

Apache 高并发时容易受限于文件数。

# 查看当前限制
ulimit -n

# 修改系统限制
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
# 内核参数优化
vim /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.swappiness = 10
sysctl -p

2. 使用合适的 MPM(非常重要)

CentOS 默认可能是 prefork,但对性能不友好。

查看当前 MPM:

httpd -V | grep -i mpm

推荐方案

  • 静态内容多 / 高并发 → event
  • 老 PHP(非 PHP-FPM) → prefork
  • PHP-FPM 环境 → event

切换 MPM(CentOS 8 / Rocky):

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

注释掉其他,启用:

LoadModule mpm_event_module modules/mod_mpm_event.so

重启:

systemctl restart httpd

二、Apache 核心配置优化

1. MPM 参数优化(以 event 为例)

<IfModule mpm_event_module>
    ServerLimit             16
    StartServers           4
    MinSpareThreads       64
    MaxSpareThreads      128
    ThreadsPerChild       64
    MaxRequestWorkers    1024
    MaxConnectionsPerChild 10000
</IfModule>

说明:

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

2. 关闭不必要模块

减少内存和攻击面:

httpd -M

常见可禁用:

  • mod_status(不对外暴露)
  • mod_userdir
  • mod_autoindex

3. KeepAlive 优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

太高会占用连接,太低会增加握手


三、静态资源与缓存优化

1. 启用压缩

LoadModule deflate_module modules/mod_deflate.so

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

2. 浏览器缓存

<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>

3. 静态文件直接由 Apache 处理

避免 PHP 解析:

<FilesMatch "\.(jpg|png|css|js)$">
    AllowOverride None
    Require all granted
</FilesMatch>

四、PHP 性能优化(如适用)

使用 PHP-FPM(强烈推荐)

yum install php-fpm
systemctl enable --now php-fpm

Apache 配置:

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

五、安全与稳定性

1. 隐藏版本信息

ServerTokens Prod
ServerSignature Off

2. 限制请求

LimitRequestBody 10485760
Timeout 60

3. 禁用目录浏览

Options -Indexes

六、监控与压测

1. 开启 status(仅内网)

<Location /server-status>
    SetHandler server-status
    Require ip 127.0.0.1
</Location>

2. 压测工具

ab -n 10000 -c 200 http://localhost/

或:

wrk -t4 -c200 -d30s http://localhost/

七、常见性能瓶颈排查顺序

  1. top / htop → CPU or 内存
  2. ss -ant | wc -l → 连接数
  3. httpd -M → 模块是否过多
  4. 是否用了 prefork + mod_php
  5. 是否未启用缓存

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

  • CentOS 版本
  • Apache 版本
  • 是否用 PHP / 什么程序(WordPress、Laravel 等)
  • 当前并发量和服务器配置

我可以给你一套针对性的优化配置。

0 踩