在 CentOS 下优化 Apache(httpd)性能,通常需要从 系统层面、Apache配置、模块、资源限制、缓存、连接数、PHP/后端 等多方面入手。下面给你一套实战常用优化方案,适合 CentOS 7 / CentOS Stream 8/9。
ulimit -n
如果小于 65535,修改:
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
vim /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
生效:
sysctl -p
查看当前 MPM:
httpd -V | grep MPM
✅ 推荐:event + PHP-FPM
编辑:
vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
<IfModule mpm_event_module>
ServerLimit 16
StartServers 4
MinSpareThreads 64
MaxSpareThreads 256
ThreadsPerChild 64
MaxRequestWorkers 1024
MaxConnectionsPerChild 10000
</IfModule>
✅ MaxRequestWorkers 决定并发上限(不是越大越好)
编辑:
vim /etc/httpd/conf/httpd.conf
减少内存占用:
httpd -M
常见可注释掉:
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
✅ 高并发:KeepAlive 可关闭
Timeout 30
LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/js application/javascript
</IfModule>
LoadModule expires_module modules/mod_expires.so
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType image/jpeg "access plus 30 days"
</IfModule>
yum install php php-fpm -y
vim /etc/httpd/conf.d/php.conf
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
systemctl enable php-fpm
systemctl start php-fpm
vim /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
CustomLog logs/access_log combined
# 高并发时可关闭
vim /etc/logrotate.d/httpd
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
setenforce 0
yum install httpd-tools -y
ab -n 10000 -c 100 http://yourdomain.com/
关注:
| 项目 | 建议 |
|---|---|
| MPM | event |
| PHP | PHP-FPM |
| KeepAlive | On / 5s |
| MaxRequestWorkers | 512–2048 |
| 压缩 | 开启 |
| 缓存 | 浏览器缓存 |
| 日志 | 简化 |
| 系统限制 | 65535 |
如果你愿意,可以告诉我:
我可以 直接帮你给出一套精准的生产级配置。