优化 Apache(httpd)性能可以从配置调优、模块管理、系统层面、缓存与代理、监控几个维度入手。下面按“实用优先”的方式整理。
Apache 性能核心是 MPM:
查看当前 MPM:
httpd -V | grep MPM
推荐(Linux):
LoadModule mpm_event_module modules/mod_mpm_event.so
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 10000
</IfModule>
要点:
MaxRequestWorkers 不要超过内存承受能力MaxConnectionsPerChild 防止内存泄漏减少模块 = 更少内存 + 更快启动
常见可禁用:
# 示例
# mod_status(生产可关)
# mod_userdir
# mod_autoindex
# mod_negotiation
查看已加载模块:
httpd -M
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
说明:
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"
ExpiresByType application/javascript "access plus 7 days"
</IfModule>
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
适合:
Apache 不适合直接扛高并发动态请求,可:
示例(PHP-FPM):
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
ulimit -n 65535
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
ab(Apache Benchmark)ab -n 10000 -c 100 http://localhost/
mod_status❌ 盲目调大 MaxRequestWorkers
❌ 开太多模块
❌ KeepAliveTimeout 设太长
❌ Apache 直接处理大文件下载
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置文件。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。