日志中的$request_time等于用户下载时间么?

2020-12-30 11:08:11 浏览数 (1)

官方文档解释:

$request_time

request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client

腾讯云文档日志说明:

响应时间(毫秒),指节点从收到请求后响应所有回包再到客户端所花费的时间

从以上两个解释大概能看出都是发送到客户端的时间,客户端一般理解为访问的用户,用户接收到所有包就是下载完了文件,那么这个时间是不是就可以理解为用户下载的时间呢?

让我们来看下面这个实例:

用户反馈是不是下载速度过快,并给出这样的两条日志

用户下载速度的计算方式是:response_length * 8.0 / 1024.0 / 1024.0 / ($request_time/ 1000.0)

如果这个$request_time时间真的网民下载所有包的时间,那么这个计算方式并没有问题,然而上述公式的计算结果约为1000Mbps!!

再根据UA能看出第一条日志使用的终端为Redmi Note 7 Pro,这是一个4G手机,理论的网速最大也只有300Mbps,那么问题出在了哪里呢?

重新审视用户的计算公式:response_length * 8.0 / 1024.0 / 1024.0 / ($request_time/ 1000.0)

response_length:发送的字节数,单位byte,最后计算结果为bps(bit/s)单位的话要乘8没有问题(1byte=8bit)

连续除以两个1024,这是单位转换,将B转为MB,也没有问题

$request_time在括号里除以1000,是将ms转为s,也没有问题

那么排除掉所有可能,就是你了,$request_time

让我们做个简单的试验

1.准备环境

新建一个域名并配置加速,并在域名下建一个10M的文件,抓取下载查看实际的下载时间与日志比对

2.开始测试

抓取测试抓取测试
对应日志对应日志

3.分析与结论

从上述简单的测试中能看出实际的下载时间在7s左右,但是日志中记录的$request_time只有5s多,相差很大

现在我们已经明显得知$request_time的时间并非用户的实际下载时间了,也就说明文档中解释的client(客户端)并非终端的用户,因此日志中的$request_time并不能被用来计算下载速度。

cdn

0 人点赞