开发者社区> 问答> 正文

CDN 命中率低

CDN 命中率低,命中率只有个位数。   是什么原因导致的呢?

展开
收起
hellomy 2018-11-14 00:19:00 1186 0
1 条回答
写回答
取消 提交回答
  • 阿里云论坛版主,QQ 1978638808

    问题症状

    CDN控制台上显示的命中率一直不高,需要排查此类为何命中率不高。

    源站收到较多来自CDN的回源请求,对源站造成一定的负载压力。

    解决方案


    1. 控制台统计的命中率仅仅统计的是CDN L1的命中率,实际情况是L2命中也是从CDN节点拿去数据的,并不会回源,所以真实的CDN命中率是略高于控制台显示的CDN命中率的。(CDN数据流向:客户端->CDN L1层->CDNL2层->源站)


    2. 查看用户所提交CDN加速域名的流量情况,加速域名的流量不高的情况下,即便MISS的URL不多,但是对命中率的统计计算是影响很大的。


      例如,某CDN加速域名一共对外提供了10个可以访问的URL,其中有一个URL源站上设置了no-cache导致不缓存,其他所有URL访问都命中的情况下,命中率也仅有90%。


      CDN加速域名的流量带宽查询可以在控制台获取到:



    3. 如果第1和第2都确认OK的情况下,下面有几种可能导致命中率低的情况,请逐一对照排查:


      1. 源站上缓存header设置不当,或者缺少必要的header,则根据CDN的缓存规则是不缓存的,那么自然每次访问都会MISS,影响命中率。


        • 缓存header设置不当主要是cache-control或者pragma的影响,即源站上设置了cache-control:no-cache/no-store/max-age=0/private或者Pragma:no-cache等均会被CDN当做最高优先级执行不缓存。


        • 缺少必要的header,则是指源站的response头中不包含etaglast-modified也会导致不缓存,具体哪几种情况会导致不缓存,可以参考download: 判断CDN不缓存某文件的方法.docx


      2. 控制台设置了不缓存的规则(比如某目录或者某种后缀的文件设置缓存时间为0秒),查询方法可以在CDN控制台查看。



      3. 源站动态内容居多,目前CDN主要是加速静态资源(css、js、html、图片、txt、视频等),针对动态资源(php、jsp、包含内部逻辑处理甚至cookie等)基本都是回源。


      4. CDN的访问URL中带有可变参数(举例:http://dccdn.pier39.cn/1.txt?timestamp=14378923](http://dccdn.pier39.cn/1.txt?timestamp=14378923,其中timestamp表示时间戳,每次访问均会不同)。这里CDN针对第一次访问的URL(之前未预热),无论该URL是否符合CDN的缓存规则,第一次访问肯定都是MISS的(因为节点上还没有这个文件),因为后面的参数可变,所以每次访问都是一个全新的URL,则每次都会MISS,从而影响命中率。


      5. 刷新操作频繁,有定时刷新的操作,每次刷新都会导致所有已经在CDN上缓存的URL失效,那么下次访问同样的URL,自然就会MISS,从而影响命中率。


      6. 文件热度不够,不经常被客户访问到,导致虽然符合上面的所有规则,但是经常有被节点下掉缓存。CDN节点上缓存的文件,可以理解为按照热度属性采取末尾淘汰制,所谓热度就是该文件在该节点上被访问的频率,文件热度不够,其实一定程度上跟这个域名本身的流量不高有关联关系(排查点2)。

    相关文档

    CDN缓存命中率下降的因素

    CDN缓存命中率低的案例分析

    常见FAQ(如何提升CDN命中率)

    CDN缓存规则

    2018-11-14 00:28:02
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
构建智能化的视频系统 阿里云CDN的进化 立即下载
CDN数据化实践 立即下载
直播CDN-X - 白山直播CDN流传递链路优化 立即下载