问题现象

为什么CDN实际计费流量与日志监控流量不同?

可能原因

日志监控中记录的流量数据,是应用层日志统计出的流量,但实际产生的网络流量比应用层统计到的流量要高出7%-15%。主要原因如下:
  • TCP/IP包头的消耗

    HTTP请求基于TCP/IP协议,现有互联网中,每个包最大是1500个字节。这1500个字节中,就包含了TCP和IP协议插入的40个字节的包头,包头部分也会产生流量,由于加包头的动作是由内核层的协议栈完成的,无法被应用层统计到,因此日志里不会记这40个字节的流量,这部分的流量会占到通过日志计算出流量的2.74%(40/1460)以上,正常情况下,会占到3%左右。

  • TCP重传

    根据互联网物理网络的负载情况,正常情况下,发送的包会有3-10%会被互联网丢弃。被丢弃之后,服务器会对丢弃的部分进行重传,重传动作是由内核层协议栈处理的,应用层也无法统计到,这部分流量占我们日志计算出流量的比例,根据网络的好坏而不等,在凌晨互联网轻载的情况下,重传率会较低;在晚高峰互联网重载的时候,重传会上升,一般情况下,在3%-7%之间。

因此在业界标准中,会在原有流量的基础上再加上7%-15%的网络消耗做为计费流量统计,我们取平均值10%做为网络消耗统计。