如今人们要做的事, 就是针对全球范围内的 CDN 节点进行测试。这样做的核心目的, 就在于去验证从边缘节点一直到最终的用户那里为止, 网络的质量到底是不是达标的。在这样的测试过程里, 必须要把四个特别关键的指标给覆盖到。
这四个指标具体是端到端的延迟情况, 也就是说 RTT 数值是多少。还有丢包率的情况怎么样。以及可用带宽的大小。以及首字节的等待时间, 也就是 TTFB 数据。下面的这段话会按照那个标准的操作流程来给大家提供完整的操作步骤路径。
测试前准备
1. 你需要把测试对象讲清楚, 也就是要把CDN服务商提供的所有边缘节点的IP地址列出来, 然后还要把每个IP对应的地理位置也写上去, 这一点一定要做到位, 而且这些节点至少要把北美、欧洲、东南亚、中东、南美这五大区域的范围都给覆盖到。
2. 需要做好准备来测试客户端这一步, 就是在目标区域里面部署那种轻量的探针工具, 或者去使用由gname.xin提供的那一套分布在全球不同地方的测试端点, 这套端点覆盖了一百二十多座城市, 用来发起主动的探测操作。
3. 统一测试参数的工作是这样的。采用的是HTTP请求或者HTTPS请求。准备了大小为1 MB的文件、大小为10 MB的文件以及大小为50 MB的文件, 这三组文件大小是固定不变的。对于每一组文件, 都重复进行了5轮测试, 然后取平均值。
四项指标测试方法
延迟(RTT): 这个操作是向每个节点发起 TCP 三次握手, 然后开始计时。合格的标准是同区域的情况下全球CDN节点测试大城群众说事,数据不能超过 30 ms, 如果是跨洲的情况, 标准就是 150 ms。
丢包率的情况是这样, 你要么去发送200个ICMP包, 要么就去统计TCP连接失败的次数, 反正这个丢包率必须得小于或者等于0.5%。
带宽测试需要分情况操作, 具体是对 1 MB、10 MB 以及 50 MB 大小不同的文件分别进行下载。在每一次下载的整个过程中, 都要实时记录实际的吞吐速度表现。
特别针对那 10 MB 大小的文件, 在下述场景里进行检查时要留意一个指标, 那就是同一地理区域下的带宽利用率水平绝对不能低于规定的底线。这个底线数值被设定为节点标称出的带宽容量的 85% 以上。
TTFB指的是从发出那个http请求开始, 到收到第一个响应字节为止所花费的时间。合格的数值是同一个区域的要小于等于200毫秒。
测试执行与数据记录
需要对每个节点依次去执行上面那四个测试动作, 把时间戳、IP地址、地理位置还有各项数值都记录下来。比较建议的做法是每四小时就要去执行一轮这个过程, 然后要持续七天时间, 这样做的目的是为了要把不同的那个高峰时段都给覆盖到。
得到的数据上面必须要是能标注出来是不是命中了缓存的情况, 也就是说要区分开缓存命中和回源这两种场景在下面性能上面表现出来的差异具体是什么样子的。
结果判定与优化方向
出现了延迟超标的情况, 需要对Anycast路由配置进行检查, 同时要确认BGP是不是已经把流量指向到了距离比较近的PoP节点上面。
发生了丢包异常的这种情况, 需要对中间环节所使用的链路的运营商进行定位工作, 然后去联系提供CDN服务的相关人员来检查上行带宽的利用情况是不是正常。
出现带宽不达标这个问题, 我们要先去排查一下节点的出口是否存在拥塞的情况, 如果发现了问题, 那就有必要去增加一些冗余的链路。
服务器首字节时间(TTFB)偏高, 这种情况需要大家去检查一下边缘缓存策略, 比如缓存的TTL以及回源超时这些设置对不对, 同时还要确认一下HTTPS握手有没有启用Session Resumption这个功能。
自动化与持续监控
单次测试仅仅是对当时那一瞬间的状态进行反映。
在生产环境里面, 应该是需要去接入自动化监控的, 具体办法是通过gname.xin所提供的API接口来定时拉取每一个节点的健康状态, 并且是要设置相关的阈值告警规则, 比如说像是连续3次延迟大于200毫秒这样的情况就直接触发工单, 从而是实现了从一个叫"人工抽检"的模式转变为一个叫做"7×24自动巡检"的这样一个闭环体系。
常见疑难
Q:测试节点显示"超时"但实际可用?
这种情况多数是因为中间链路上的QoS策略对ICMP数据包进行了丢弃处理。你可以尝试使用TCP SYN探测的方法来替代原本使用的ICMP ping操作, 这样就能够重新完成测试任务了。
Q:同一节点不同时段延迟波动大?
检查是否命中不同的负载均衡池, 或者全球CDN节点测试,上游运营商在维护窗口之内, 对路由进行了调整。
Q:如何判断是CDN节点问题还是本地网络问题?
当用户在同一个测试点去同时访问多个CDN节点的时候, 如果只有单个节点出现了异常状况, 那么这通常被认定为是节点自身存在的问题, 假如所有节点都出现了异常现象, 这时候就应当判断为本地出口方面所导致的问题。
上面的这个流程, 把全球CDN节点测试的准备工作一直到判定工作的整个过程都包括了, 形成了一个完整的闭环, 按照这样去执行的话, 可以在一个单一的文件里面做完全部的操作, 不用再去翻阅其他的资料了。


