在 CentOS 上优化 Apache(httpd)可以从系统层面、Apache 配置、模块管理、缓存、连接数、安全与监控等多个维度进行。下面按实战可操作的方式给你一份较完整的优化指南(适用于 CentOS 7 / Rocky / Alma / CentOS Stream)。
Apache 高并发时容易遇到 Too many open files
ulimit -n
永久修改:
vi /etc/security/limits.conf
追加:
* soft nofile 65535
* hard nofile 65535
vi /etc/sysctl.conf
建议配置:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
生效:
sysctl -p
httpd -V | grep MPM
常见模式:
prefork(稳定,但性能一般)worker(线程)event(✅ 推荐,性能最好)vi /etc/httpd/conf.modules.d/00-mpm.conf
确保只有:
LoadModule mpm_event_module modules/mod_mpm_event.so
注释掉:
# LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
编辑主配置文件:
vi /etc/httpd/conf/httpd.conf
<IfModule mpm_event_module>
ServerLimit 16
StartServers 4
MaxRequestWorkers 400
MinSpareThreads 64
MaxSpareThreads 128
ThreadsPerChild 25
MaxConnectionsPerChild 10000
</IfModule>
✅ 适用于中等并发(200~500)
httpd -M
常见可关闭:
# LoadModule autoindex_module
# LoadModule userdir_module
# LoadModule negotiation_module
❌ 不推荐:
AllowOverride All
✅ 推荐:
AllowOverride None
然后直接写规则到 httpd.conf
vi /etc/httpd/conf.d/deflate.conf
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
<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>
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
yum install php-fpm -y
systemctl enable php-fpm
Apache 配置:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
vi /etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
LogLevel warn
CustomLog /dev/null common
ServerTokens Prod
ServerSignature Off
LimitRequestBody 10485760
systemctl status httpd
ss -ant | grep :80
yum install httpd-tools -y
ab -n 1000 -c 100 http://localhost/
| 项目 | 建议 |
|---|---|
| MPM | event |
| MaxRequestWorkers | 300~500 |
| KeepAlive | On |
| PHP | PHP-FPM |
| gzip | 开启 |
| .htaccess | 尽量不用 |
你可以直接告诉我:
我可以给你一份完全定制的 Apache 优化方案,甚至可以直接帮你写一份 httpd.conf 示例。