用 Apache 日志定位瓶颈并用配置优化提速
一 建立可观测性基础
/var/log/apache2/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 root adm
sharedscripts
postrotate
systemctl reload apache2 >/dev/null
endscript
}
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined
二 从日志里找出影响速度的关键问题
awk '{print $NF, $7}' access.log | sort -k1,1nr | head -20
awk '$9 >= 500 {print $7}' access.log | sort | uniq -c | sort -nr
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
三 把日志洞察转化为配置优化
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
SetEnvIf Request_URI "\.(gif|jpg|png|css|js)$" img
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined env=!img
四 闭环验证与持续化