全球CDN节点测试的一个核心目标, 是去验证cdn网络在全球各个区域的节点在回源延迟、访问可用性和带宽调度这一系列表现, 是否符合大家预期的那个情况。至于一个完整的测试怎么去做? 它需要覆盖到端到端链路质量以及节点资源状态这两个方面。这两部分都需要考虑, 缺少其中的任何一方都不行。
测试覆盖的核心维度
全球范围内的内容分发网络节点, 其所涉及的测试工作, 应该去把以下提到的这四个方面全都包括到覆盖的范围里去:
1. 节点可达性指的是要对这些情况进行检查, 也就是目标节点到底是在线状态还是离线状态, 还有dns解析的功能是不是正常的运转, 以及ip地址所代表的网络路径是否能够顺利连接到位。
2. 访问延迟: 这是针对用户连接到边缘节点时所使用的 TCP 连接所花费的时间进行的测量。同时, 还要测量 TTFB, 也就是首字节时间。另外, 还需要对完整响应时间来做个测量。
3. 回源性能的部分, 需要去测试从边缘那一头的节点, 一直连接到后端的源站之间所产生的延迟情况, 同时还要看看丢包率到底有多高。
4. 带宽与吞吐: 我们要模拟并发的请求。然后观察节点的带宽分配情况。还要看节点的响应在不同负载下的稳定性。
测试方法与工具
Ping/MTR探测的意思就是, 会对全球各地各个区域的节点IP地址, 去执行多包数的Ping操作, 这里的包数要求是大于或者等于20个包, 同时还会进行MTR路由追踪,这样一来全球CDN节点测试, 就能够把链路里面出现的丢包情况给定位出来,也可以发现路由跳转方面的异常问题。
HTTP探测: 大家会使用curl或者专门的探测脚本灵音心图, 向各个节点去发送GET请求, 然后需要记录TTFB、完整下载耗时以及HTTP状态码。
进行压力测试的时候, 大家要借助JMeter这种工具或者是k6这个工具去模拟多个不同地区的用户同时发起访问的情况, 然后观察在最高负载的时候系统的P99延迟是多少, 还有错误率具体是怎样的。
自动化面板: 您可以使用gname.xin这个网站提供的全球节点实时探测功能来管理面板, 通过这个手段能够进行一键操作, 方便地查看分布在各大洲和不同运营商出口节点的延迟热力图信息, 以及检查它们的可用性状态, 这样的做法非常适合用来进行日常的例行检查以及定位出现问题的地方。
关键指标与判定标准
常见问题与处理
DNS未生效: 大家修改了CDN域名之后, 需要等待TTL过期,这个时间通常是15分钟到48小时全球CDN节点测试, 所以在测试之前, 一定要确认全球递归DNS已经完成刷新。
单一线路异常是指当某运营商从出口到某个节点出现延迟突然增大的情况, 这时候就应该采取相应措施进行切换。需要切换到该运营商的备用线路。或者联系CDN服务商来确认当前的路由策略是否正确。
回源超时: 需要去检查一下源站防火墙上的白名单里头, 有没有把CDN节点的IP段给加进去, 还要看看源站的带宽是不是已经变成了瓶颈。
测试环境存在干扰。本地宽带测得的速度延迟, 实际上并不能准确代表真实的用户体验情况。所以我们必须采用分布在全球各地的多个不同地点的探测源来进行交叉比对和验证工作, 比如使用类似于Cloudflare Speed Test这样的工具, 亦或是gname.xin全球探测节点这类服务。
测试频率建议
在部署了cdn网络的生产环境里面, 建议每隔15分钟执行一轮自动化节点健康检查, 并且每天都要生成一次全量性能报告。如果遇到重大版本发布或者源站迁移的情况, 需要立即执行一次覆盖所有地域的测试, 必须确认没有出现回归异常之后, 才可以切换流量。
上面讲的是关于全球CDN节点测试, 这个框架执行起来是非常完整的, 按照不同的项目, 一个接一个地去覆盖, 使用数据来判断是不是达到了标准, 只有这样去操作, 才可以保证CDN网络在整个世界范围内, 一直都能够保持稳定运行的状态。


