nginx cache查看緩存命中率

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: 1、解決依賴關系 yum groupinstall "Development Tools" ...
    不排版閱讀 875評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • (創建于2017/12/21) 1.引用是變量的別名 2.指針和引用的比較 3.復雜數據類型的引用 4.引用的本質...
    任振銘閱讀 216評論 0 0
  • 傍晚家中停電,尋一只軟枕,臥在窗下,借著將暗未暗的天光,一本隨手抄起的書,讀至此篇,甚覺有趣,抄錄來與君分享,愿同...
    月未圓時閱讀 1,014評論 0 1
  • 一,再次相遇 大家好! 我是靜。 大一寒假的情人節,我最刻骨銘心。這一天,是我們高考分別之后的第一次見面。 ...
    琦小鬼閱讀 441評論 0 0