在 CentOS 上优化 Apache(通常是 httpd),可以从系统层面、Apache 配置、模块管理、缓存与安全几个方面来做。下面是一套实用、可落地的优化方案,适用于 CentOS 7 / 8 / Stream。
Apache 高并发需要更多 fd:
ulimit -n 65535
永久生效:
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 = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
执行:
sysctl -p
httpd -V | grep -i mpm
常见模式:
vi /etc/httpd/conf.modules.d/00-mpm.conf
确保:
LoadModule mpm_event_module modules/mod_mpm_event.so
vi /etc/httpd/conf/httpd.conf
# 示例(视情况关闭)
# LoadModule status_module modules/mod_status.so
# LoadModule autoindex_module modules/mod_autoindex.so
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
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>
根据内存调整:
- 2G 内存:MaxRequestWorkers 150–200
- 4G 内存:300–500
vi /etc/httpd/conf/httpd.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>
yum install mod_cache -y
<IfModule mod_cache.c>
CacheEnable disk /
CacheRoot /var/cache/httpd
</IfModule>
CustomLog logs/access_log combined
# 高并发时
# CustomLog logs/access_log common
关闭不必要日志:
# ErrorLog logs/error_log
ServerTokens Prod
ServerSignature Off
Options -Indexes
systemctl enable httpd
systemctl restart httpd
apachectl -S
yum install httpd-tools -y
ab -n 1000 -c 100 http://localhost/
✅ CentOS + Apache(event) + PHP-FPM
✅ 静态资源走 Nginx / CDN
✅ Apache 只处理动态请求
如果你愿意,我可以:
直接告诉我你的服务器配置和使用场景即可。