优化 CentOS 下的 Apache(httpd)可以从 系统层面、Apache 配置、模块管理、连接与缓存、安全与日志 等多个方面入手。下面给你一套比较完整、可操作的优化方案(适用于 CentOS 7/8,Apache 2.4)。
ulimit -n
建议至少:
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 = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
生效:
sysctl -p
配置文件位置:
/etc/httpd/conf/httpd.conf
查看当前 MPM:
httpd -V | grep MPM
event(高并发)vi /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 10000
</IfModule>
说明:
MaxRequestWorkers ≈ 并发处理能力查看已加载模块:
httpd -M
常见可关闭模块:
# 注释掉
# LoadModule autoindex_module
# LoadModule userdir_module
# LoadModule status_module
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
高并发场景建议 KeepAliveTimeout 不要超过 5 秒
防止大文件或攻击:
LimitRequestBody 10485760 # 10MB
yum install mod_cache mod_cache_disk
示例:
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/httpd
CacheEnable disk /
CacheDefaultExpire 3600
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 7 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType application/javascript "access plus 7 days"
</IfModule>
LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
Options -Indexes
ServerTokens Prod
ServerSignature Off
CustomLog logs/access_log combined env=!dontlog
SetEnvIf Request_URI "\.(gif|jpg|png|css|js)$" dontlog
yum install php-fpm
Apache 配置:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
httpd -t
yum install httpd-tools
ab -n 10000 -c 100 http://localhost/
✅ CentOS + Apache 2.4
✅ MPM event
✅ PHP-FPM
✅ gzip + expires
✅ 关闭无用模块
你可以告诉我:
我可以直接给你 一份可直接使用的 httpd.conf 优化模板。