在 CentOS 下优化 Apache(httpd),可以从 系统层、Apache 配置、模块优化、缓存、PHP/应用层 等多个维度进行。下面按常用实践给你一个体系化优化方案。
编辑:
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
getenforce
setenforce 0
永久关闭:
vi /etc/selinux/config
SELINUX=disabled
查看当前 MPM:
httpd -V | grep MPM
vi /etc/httpd/conf.modules.d/00-mpm.conf
启用:
LoadModule mpm_event_module modules/mod_mpm_event.so
# 注释掉 prefork 和 worker
编辑:
vi /etc/httpd/conf/httpd.conf
或新建:
vi /etc/httpd/conf.d/mpm.conf
示例(4 核 8G 服务器):
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 50
MaxRequestWorkers 500
MaxConnectionsPerChild 10000
</IfModule>
说明:
MaxRequestWorkers:最大并发连接数ThreadsPerChild:每个进程线程数MaxConnectionsPerChild:防止内存泄漏httpd -M
注释掉不用的模块,如:
# mod_ldap
# mod_cgi
HostnameLookups Off
Options -Indexes
KeepAlive Off
或适度调整:
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
vi /etc/httpd/conf.d/deflate.conf
LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
vi /etc/httpd/conf.d/cache.conf
<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 php-fpm
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
CustomLog logs/access_log combined
# 或关闭
# CustomLog /dev/null combined
vi /etc/logrotate.d/httpd
ServerTokens Prod
ServerSignature Off
yum install httpd-tools
ab -n 10000 -c 500 http://yourdomain.com/
| 项目 | 建议 |
|---|---|
| MPM | event |
| KeepAlive | 高并发关闭 |
| 压缩 | 开启 |
| 缓存 | 浏览器缓存 |
| PHP | PHP-FPM |
| 文件描述符 | 65535+ |
| 日志 | 精简 |
如果你愿意,可以告诉我:
我可以给你一套 精准的 Apache 优化配置。