从nginx日志中统计nginx缓存命中率
问题背景
很多动态页面,都可以通过 nginx 进行缓存,从而提高访问速度,并减小对 banckend 的服务负载,通常可以通过 proxy_cache_path 来解决,但是如何判断缓存命中率呢
解决方案
面对以上问题,可以通过两种方式来解决:
- 方式一: 通过浏览器中的 response 中的 Nginx-Cache 字段来判断
- 方式二: 通过 Nginx 的 access 日志来标记
今天我们介绍方式二:
要统计nginx的缓存,前提肯定是你已经配置了nginx的缓存,然后需要在日志中输出缓存的状态,如下日志格式配置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' '"$upstream_cache_status"';
可以看到日志中最后一个项是缓存状态。
统计方法:用HIT的数量除以日志总量得出缓存命中率:
awk '{if($NF=="\"HIT\"") hit++} END {printf "%.2f%",hit/NR}' access.log
从nginx日志中统计nginx缓存命中率
相关主题: