美文网首页
nginx cache查看缓存命中率

nginx cache查看缓存命中率

作者: FMD彩虹 | 来源:发表于2018-03-23 17:57 被阅读153次

nginx提供了$upstream_cache_status这个变量来显示缓存的状态,我们可以在配置中添加一个http头来显示这一状态,达到类似squid的效果。

  • nginx location 中加入 add_header Nginx-Cache "$upstream_cache_status";
image.png

通过nginx 日志或者curl 查看

image.png
  • $upstream_cache_status包含以下几种状态:
·MISS 未命中,请求被传送到后端
·HIT 缓存命中
·EXPIRED 缓存已经过期请求被传送到后端
·UPDATING 正在更新缓存,将使用旧的应答
·STALE 后端将得到过期的应答

nginx cache命中率统计

即然nginx为我们提供了$upstream_cache_status函数,自然可以将命中状态写入到日志中。具体可以如下定义日志格式:

gth" "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$request_time" "$upstream_response_time" "$upstream_cache_status" "$upstream_addr"
  • 命中率统计方法:用HIT的数量除以日志总量得出缓存命中率:
awk '{if($NF==""HIT"") hit++} END {printf "%.2f%",hit/NR}' access.log
  • 了解了原理以后,也可以通过crontab脚本将每天的命中率统计到一个日志中,以备查看
# crontab -l
9 0 * * * /opt/shell/nginx_cache_hit.sh  >> /usr/local/nginx/logs/hit
  • 脚本内容
#!/bin/bash
LOG_FILE='/data/logs/nginx/logs/access.log'
LAST_DAY=$(date +%F -d "-1 day")
awk '{if($NF==""HIT"") hit++} END {printf "'$LAST_DAY': %d %d %.2f%n", hit,NR,hit/NR}' $LOG_FILE

相关文章

  • nginx cache查看缓存命中率

    nginx提供了$upstream_cache_status这个变量来显示缓存的状态,我们可以在配置中添加一个ht...

  • Nginx静态缓存配置

    Nginx 静态缓存配置方法 我们需要用到nginx两个缓存模块Expires和proxy_cache。Nginx...

  • Java高并发-缓存

    缓存 提高数据命中率 缓存分类和应用场景 本地缓存:编程实现(成员变量、局部变量、静态变量)Guava Cache...

  • 技术Checklist

    缓存J2cache、ehcache、redis √命中率、穿透 √ JVM内存 √GC √ 锁机制java锁机制数...

  • 缓存相关的

    web缓存服务器 varnish / squid / nginx cache 有什么不同? Nginx 反向代理为...

  • CocoaPods 缓存

    缓存路径 ~/Library/Caches/Cocoapods 查看缓存命令pod cache list 清除...

  • Nginx 缓存及HTTPS

    1. Nginx 缓存 客户端缓存 服务端缓存 1.1 缓存配置 proxy_cache_path proxy_c...

  • Linux查看cpu缓存

    查看cpu缓存dmesg | grep cache 2.查看cpu各级缓存大小ls /sys/devices/sy...

  • 2019-03-05 cache

    如何提高缓存命中率 Google Guava Cache详解及使用场景 有关于移动边缘计算(MEC)/Cloud-...

  • Linux清理cache缓存

    当cache缓存占用太大,服务起不来,需要查看清理缓存 查看缓存:free -m 输入运行下面一行:echo 3 ...

网友评论

      本文标题:nginx cache查看缓存命中率

      本文链接:https://www.haomeiwen.com/subject/kewxcftx.html