转自:http://www.libertyvps.com/thread-275-1-1.html
nginx提供了$upstream_cache_status这个变量来显示缓存的状态,我们可以在配置中添加一个http头来显示这一状态,达到类似squid的效果。
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
proxy_buffer_size 128k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_cache cache;
proxy_cache_valid 200 304 1h;
proxy_cache_valid 404 1m;
proxy_cache_key $uri$is_args$args;
add_header Nginx-Cache "$upstream_cache_status";
proxy_pass http://backend;
}
HTTP/1.1 200 OK
Date: Mon, 22 Apr 2013 02:10:02 GMT
Server: nginx
Content-Type: image/jpeg
Content-Length: 23560
Last-Modified: Thu, 18 Apr 2013 11:05:43 GMT
Nginx-Cache: HIT
Accept-Ranges: bytes
Vary: User-Agent
为了能够统计缓存的命中率,我们需要在日志中记录这一状态
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
30.15%
$upstream_cache_status包含以下几种状态:
·MISS 未命中,请求被传送到后端
·HIT 缓存命中
·EXPIRED 缓存已经过期请求被传送到后端
·UPDATING 正在更新缓存,将使用旧的应答
·STALE 后端将得到过期的应答
分享到:
相关推荐
如何提升缓存命中率分发层 + 应用层,双层nginx分发层分发层nginx,负责流量分发的逻辑和策略,这个里面它可以根据你自己定义的一些规则,比如根据produ
【Nginx 静态文件缓存解决方案】 Nginx 是一款高性能的 HTTP 和反向代理服务器,常用于处理静态资源,以减轻后端服务器的压力。...同时,监控缓存命中率和清理策略是保持缓存系统高效运行的关键。
- **缓存策略**:理解不同的缓存策略,如基于时间、大小或命中率的缓存更新规则。 7. **日志管理** - **日志格式**:配置Nginx的日志格式,以便更好地分析和监控服务器性能。 - **日志切割**:学习自动切割日志...
6. **监控指标**:通过nginx-vts-exporter,可以监控的指标可能包括但不限于:连接数、请求数、响应时间、错误率、HTTP状态码分布、缓存命中率等,这些数据有助于识别性能瓶颈、异常情况和优化服务器配置。...
3. 统计监控:提供缓存命中率、使用率等实时统计信息。 通过以上讲解,你已经对Nginx的安装、配置、优化及Web缓存有了深入理解,结合NCACHE模块,你将能够构建一个高效、稳定的Web服务环境。实践是检验真理的唯一...
2. **缓存命中率**:`proxy_cache_min_uses`用于设置缓存条目至少被使用多少次才写入缓存,避免频繁变动的内容占用缓存空间。 3. **缓存刷新**:可以通过URL模式如/purge/来设计清除特定缓存的机制,结合`allow`和`...
通过使用nginx uri一致性哈希,将请求分发到10台缓存服务器上,总容量提升10倍,经过一致性哈希,命中率提升至999.9% 特别适合bazel服务相关的环境使用。 完整配置版本,下载后可直接启动使用。 1.sh bazel-remote...
- **一致性哈希**:相比轮询,一致性哈希算法能够提供更好的缓存命中率。但在某些情况下可能会导致单机热点问题。为了解决这个问题,可以采取以下措施: - 将热点数据直接推送到接入层Nginx缓存。 - 设置阈值,当...
- **缓存状态**:如有使用缓存的情况,缓存命中率、缓存大小等。 **自定义监控**: Prometheus的强大之处在于其灵活的数据标签系统。你可以定义特定的标签,如`datacenter`和`project`,以区分不同机房和项目下的...
课程中可能涵盖了如何设置Nginx缓存策略,如缓存时间、过期策略,以及如何利用缓存命中率等指标进行性能监控。此外,还可能讲解如何结合Hadoop这样的大数据处理框架,进行大数据分析,为电商网站提供个性化推荐和...
- 缓存控制:包括缓存过期策略、缓存刷新和缓存命中率优化。 4. **SSL/TLS安全** - HTTPS配置:如何在Nginx中启用SSL,配置证书和密钥,实现安全的HTTP通信。 - SSL优化:包括协议选择、加密套件配置、OCSP ...
4. **缓存状态**:如果Nginx配置了缓存,需要查看缓存命中率和存储利用率。 5. **错误日志**:分析Nginx错误日志,可以发现潜在问题,如连接超时、重试、拒绝等。 实现这些检查通常需要编写特定的脚本或程序,可以...
3. **缓存命中率**:优化缓存命中率是提高系统性能的关键。通过合理设置缓存大小、使用缓存预热、缓存淘汰策略(如 LRU, LFU 等)可以提升命中率。 4. **缓存一致性**:在分布式环境下,保证缓存的一致性至关重要。...
1.13.0可能改进了缓存策略,提高了缓存命中率。 9. **错误页面定制**:Nginx允许用户自定义错误页面,提供更友好的用户体验。 10. **配置语法优化**:Nginx的配置文件语法简洁明了,1.13.0可能进行了微调,增加了...
2. **缓存策略**: `proxy_cache_key`定义缓存键,控制缓存命中率。 3. **缓存更新**: `proxy_cache_bypass`和`proxy_no_cache`决定是否绕过缓存,`proxy_cache_revalidate`检查源服务器更新。 ### 六、Nginx高级...
**16.2 利用Nginx urlhash提高squid服务器命中率** 介绍如何使用Nginx的urlhash特性来优化Squid缓存服务器的表现。 **16.3 Nginx实践使用memcached模块加速PHP应用程序** 通过集成memcached缓存模块,提高PHP应用...
设计缓存方案时,需要考虑多个因素,如缓存命中率、数据更新策略(如LRU、LFU)、缓存失效策略、缓存一致性以及如何处理缓存穿透和缓存雪崩等问题。此外,缓存大小的设定、缓存的数据结构选择、并发控制等也是重要...
- **原理介绍**:首先介绍了内容缓存的基本原理,包括缓存命中率、缓存过期机制等。 - **配置示例**:随后提供了详细的配置代码示例,帮助读者理解如何配置Nginx进行高效的缓存管理。 - **最佳实践**:分享了一些...
轮询确保请求均匀分布,一致性哈希则可提高缓存命中率,但可能导致热点问题。为解决热点问题,可以将热点数据直接推送至接入层Nginx,或者设定阈值切换至轮询算法。 2. **应用Nginx本地缓存**: - 应用Nginx可以...