在 CentOS 上优化 Apache(httpd),通常从 系统层面、Apache 配置、模块优化、PHP/应用层、缓存与静态资源 几个方面入手。下面给你一套实用且可落地的优化方案(适用于 CentOS 7 / 8 及 Rocky / Alma 类似系统)。
Apache 高并发时需要大量文件句柄。
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_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.ip_local_port_range = 1024 65535
生效:
sysctl -p
配置文件位置:
/etc/httpd/conf/httpd.conf
查看当前 MPM:
httpd -V | grep MPM
vi /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 128
ThreadsPerChild 64
MaxRequestWorkers 1024
MaxConnectionsPerChild 10000
</IfModule>
✅ 说明:
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
✅ 建议:
减少内存占用。
httpd -M
常见可禁用模块:
# 注释掉以下模块
# mod_cgi
# mod_userdir
# mod_autoindex
vi /etc/httpd/conf.d/deflate.conf
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/js application/javascript application/json
</IfModule>
vi /etc/httpd/conf.d/expires.conf
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
</IfModule>
yum install php php-fpm -y
Apache 配置转发:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
vi /etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
Options -Indexes
适合静态站点。
CustomLog logs/access_log combined
或按条件记录:
SetEnvIf Request_URI "\.(gif|jpg|png|css|js)$" no_log
CustomLog logs/access_log combined env=!no_log
vi /etc/logrotate.d/httpd
yum install httpd-tools -y
ab -n 10000 -c 200 http://yourdomain.com/
systemctl status httpd
启用 status 页面:
LoadModule status_module modules/mod_status.so
<Location /server-status>
SetHandler server-status
Require ip 127.0.0.1
</Location>
✅ 高并发 Apache 优化组合
如果你愿意,可以告诉我:
我可以 直接给你一份定制化的 httpd.conf 配置。