first buffer time 时间过长

本文详细解析FirstBufferTime概念,通过LR帮助手册深入探讨第一次缓冲时间的定义、网络时间与服务器时间的计算,并结合实际案例分析FirstBufferTime时间度量的客户端特性。同时,提供了一个形象的HTTP链接请求响应模式示例,帮助理解网络时间、服务器时间与响应时间之间的关系。
今天遇到个first buffer time 时间过长问题,百度了下,如下:
学习ing
///////////////////////////////////////////////////

详解FirstBufferTime
详解第一次缓冲时间

测试结果分析过程中,经常遇到第一次缓冲时间FirstBufferTime,并且发现大部分系统的响应时间也都浪费在了这里,再给研发解释这个问题时候,又不能拿FirstBufferTime直接给研发说,抽时间整理了下,希望对大家有用

以下资料来自
LR
帮助手册:

定义:第一次缓冲时间细分图显示成功从Web服务器返回的第一次缓冲之前的这一段时间内,每个网页组件的相关服务器/网络时间(以秒为单位)

网络时间:从发送第一个http请求那一刻直到收到确认为止,所经过的平均时间

服务器时间:从收到初始http请求确认(通常为get)直到成功收到来自Web服务器的第一次缓冲为止,所经过的平均时间。

注意:要从客户端测定服务器时间,因此发送初始HTTP请求到发送第一次缓冲这一段时间内网络性能发生变化,则网络时间可能会影响此度量,因此所显示的服务器时间是一个估计值,可能不太精确



如果细心看了后面的注意,很多人就明白了,所有关于FirstBufferTime时间的度量都是来自客户端的。
至于帮助手册里面的不太精确,还有这个网络时间和服务器时间如何计算,我分析了下,个人观点如下:

首先要了解
http
传输,这个大叔以前发过相关资料,这里推荐个网址
http://www.cnpaf.net/Class/HTTP/200408/83.html

里面有个形象的举例,就是电话订货,到送货上门,

这里拿图讲例子;
[img]http://dl2.iteye.com/upload/attachment/0093/9621/93f0f705-7c65-3c6c-922e-96199e8e68a2.bmp[/img]
上图类似于http链接请求响应模式,其中很明显

网络时间=N1+N2+N3
响应时间=R1+R2
而根据 LR
结果分析定义发现

网络时间=N1+R1+N2
响应时间=R2+N3
O(∩_∩)O

怎么解释呢?
N1
过程为建立链接过程,就是客户端给服务器端发送请求说,我要取什么东西,R1为服务器响应时间,响应结果只是收到,然后经过N2传输给客户端,OK 链接建立,但是服务器响应还没结束,要准备客户端所索取的数据,所以继续响应,(此时对http来说,客户端处于等待接收状态),然后把结果传输给客户端,这就是N3时间
LR在计算结果时候 拿R1和 N3进行了抵消,所以给出来的只是近似值
### 相位缓冲段的时间长度划分 在 CAN 总线通信协议中,相位缓冲段分为两个部分:Phase_Seg1 和 Phase_Seg2。这两个阶段位于传播延迟段 Propagation Segment 后面,并且它们共同决定了采样点的位置以及如何应对网络中的时钟偏差。 #### 1. **Phase_Seg1** Phase_Seg1 是第一个相位缓冲段,它允许对传播延迟进行补偿并提供额外的时间来适应可能发生的早期事件。如果发生再同步,则此段可能会被延长最多 tSJW 的时间单位 (TQ)[^1]。 #### 2. **Phase_Seg2** Phase_Seg2 则是第二个相位缓冲段,在采样点之后。这一段主要用于处理数据的实际传输过程。当需要缩短比特周期以匹配更快的节点时钟速度时,它可以减少至最小值(即零 TQ)。同样地,其缩减也受到同步跳变宽度 SJW 的约束[^1]。 两者之和加上其他固定组成部分构成了整个名义上的位时间结构: - Bit Time = Sync Seg + Propagation Seg + Phase_Seg1 + Phase_Seg2 其中, - `Sync Seg` 表示同步段; - `Propagation Seg` 负责考虑物理介质上传输所需的时间; 值得注意的是,虽然可以通过调整这些参数优化性能表现,但是过度配置某一部分可能导致整体效率下降或者无法满足实时性需求等问题出现。 ```python # Python 示例代码展示如何设置 CAN 波特率相关参数 class CanBitTiming: def __init__(self, sync_seg=1, prop_seg=1, phase_seg1=8, phase_seg2=7, sjw=4): self.sync_seg = sync_seg # Synchronization segment length in time quanta. self.prop_seg = prop_seg # Propagation delay segment length in time quanta. self.phase_seg1 = phase_seg1 # First phase buffer segment length in time quanta. self.phase_seg2 = phase_seg2 # Second phase buffer segment length in time quanta. self.sjw = sjw # Resynchronization jump width. bit_timing_example = CanBitTiming() print(f"SJW Length: {bit_timing_example.sjw} tq") ``` 上述脚本定义了一个简单的类用于表示典型 CAN 帧格式下的各个定时组件及其关系模型化方法之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值