在 CentOS 上优化 Apache(httpd)配置,通常需要从系统层面、Apache 参数、模块、缓存、安全等多方面入手。下面按实用优先级给你一套常见优化方案(以 CentOS 7/8 + Apache 2.4 为例)。
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 100000
执行:
sysctl -p
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
查看当前 MPM:
httpd -V | grep MPM
eventprefork(配合 php-fpm 更好)切换 MPM(CentOS):
vim /etc/httpd/conf.modules.d/00-mpm.conf
示例(event):
LoadModule mpm_event_module modules/mod_mpm_event.so
/etc/httpd/conf/httpd.conf 或 extra 中:
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 10000
</IfModule>
说明:
MaxRequestWorkers决定并发上限MaxConnectionsPerChild防止内存泄漏
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
高并发场景:KeepAlive 可关闭或缩短
查看已加载模块:
httpd -M
常见可禁用:
# 注释掉
# LoadModule status_module
# LoadModule autoindex_module
# LoadModule userdir_module
LoadModule deflate_module modules/mod_deflate.so
<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"
</IfModule>
yum install php-fpm
Apache 配置:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
CustomLog logs/access_log combined env=!dontlog
或关闭不必要日志:
# CustomLog off
ServerTokens Prod
ServerSignature Off
TraceEnable Off
ab -n 10000 -c 500 http://localhost/
观察:
/var/log/httpd/error_log✅ CentOS + Apache(event) + PHP-FPM
✅ gzip + expires
✅ 系统参数调优
✅ 禁用无用模块
如果你愿意,可以告诉我:
我可以给你针对性配置模板。