用 Nginx 日志定位瓶颈并落地数据库优化
一、把关键时间指标打进日志
log_format main_ext '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time $upstream_response_time '
'"$http_x_forwarded_for" "$upstream_cache_status"';
access_log /var/log/nginx/access.log main_ext;
二、从日志里找出“数据库慢”的证据
# 以第1列为时间、第7列为请求、最后一列为 $request_time 为例
awk '{print $4,$7,$NF}' access.log \
| awk -F'"' '{print $1,$2,$3}' \
| sort -k3 -rn \
| head -10
awk '{print $9}' access.log | sort | uniq -c
awk '{print $10}' access.log | sort | uniq -c
# 按每分钟请求数
cat access.log | awk '{print substr($4,2,6)}' | sort | uniq -c
三、把“慢”转化为数据库可执行的优化动作
四、把日志离线与实时分析管道搭起来
五、落地检查清单与量化目标