性能指标之响应时间

一、响应时间

在性能测试过程中,大家都接触过响应时间、TPS、并发用户、吞吐量、事务成功率、资源使用率等非功能指标,为了更好的了解这些指标,本文将介绍响应时间这个性能指标。

响应时间(Response Time)指的是从请求端发起请求开始,到请求端接收到服务器端的返回结束,这个过程所耗费的时间。它完整地记录了对应系统处理请求交易的时间。

如图一的访问请求,客户端的请求响应时间 = N1 + A1 + N2 + A2 +N3 + A3 + N4 + A4 + N5 + A5 + N6:
在这里插入图片描述
图一:请求流程图

二、孰快孰慢

响应时间对于普通用户而言,感知是请求返回的快慢;但对于我们IT人,就必须是具体的可度量的值,比如多少毫秒,多少秒。

但是响应时间的绝对值并不能直接反映系统的性能高低,性能的高低实际上取决于用户对该响应时间的接受程度。

比如贷记卡调用反欺诈系统,要求的响应时间是50ms以内;对于行内用户使用的P2客户端,大多数页面访问如果响应时间小于300ms,用户都很满意;响应时间1-3s,也还可以接受;但是如果响应时间超过3s,就要发点牢骚了;一旦超过10s,可能就难以接受了。但是对于大数据分析平台,比如进行一次客户评级趋势分析,需要耗时十几分钟甚至更长时间,由于这些操作频次少,价值大,因此这个响应时间对于客户来说是可以接受的。

虽然不同的场景对响应时间的要求各有差异,但是业界对于在线交易系统,还是有一个普遍的标准:早期是2/5/10秒原则,现如今随着技术的发展,用户的要求也提高了,逐渐朝1/3/5秒原则演变。

1/3/5秒原则:

  • 在1s以内得到响应,用户会觉得系统响应很快,体验非常好;
  • 1-3秒得到响应,用户可以接收,体验还不错;
  • 3-5秒才响应,用户就感觉慢了,体验有点糟糕;
  • 一旦响应超过5秒,用户就会认为是个失败的体验,选择离开或重新发起请求。

因此响应时间没有绝对的快慢之分,建议参考业界的普遍原则和用户的实际需求来确定各应用系统对应的响应时间指标。

三、时间都去哪了

如果系统的响应时间超出了预期的指标值,就要引起我们的关注,需要去分析时间都去哪了?

参照图一请求流程图,我们对响应时间做个头脑风暴,大体切分如下:
在这里插入图片描述
图二:响应时间切分图

我们将交易请求的时间消耗,切分成展示耗时、网络传输耗时、应用处理耗时等部分。

展示耗时
主要差别在浏览器、用户自身电脑配置的差异上;
网络传输耗时,如果涉及广域网,大多情况都会有5ms-50ms的延时;
如果是局域网普遍延时都在1ms以内,几乎可以忽略不计。
为了避免网络延时,建议应用系统的服务器部署在同一局域网中。

不过这两个方面相对而言是比较不可控的,因此不是我们关注的重点。

我们关注的重点是应用系统处理耗时。一旦响应时间超时,我们着重从应用程序处理逻辑上分析:逻辑是否正确、算法的时间复杂度是否合理、日志是否写的太多了?同时监控服务器的资源使用情况,分析是否存在CPU使用率过高、存不足、IO繁忙等现象?根据实际工作经验,通常情况,最长的时间消耗是在数据库的读取上。

一旦定位出耗时长是由于数据库操作导致的,重点则是分析SQL语句,分析数据库的表、索引设计是否合理,表关联是否正确,是否存在扫描大量非必要的数据造成IO读取的浪费,以及SQL实现算法是否可优化等。

可以说每个步骤的具体分析过程,包含着很多知识点,也充满了乐趣,推动着我们不断地去学习和实践。

四、结束语

根据以上介绍和耗时切分的分享,实际工作中依此进行层层深入的分析,响应时间耗时必将大白于天下。通过本文介绍不知道你是否对响应时间有了更深入的了解?欢迎大家互相交流探讨。

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上升时间是指信号从零到达其最终稳定值所需的时间。在MATLAB中,我们可以使用step函数来求解阶跃响应性能指标。 step函数的基本用法是: ```matlab [y,t] = step(sys) ``` 其中sys是系统的传递函数,y是系统的阶跃响应,t是对应的时间。 在求解阶跃响应性能指标时,我们需要找到阶跃响应曲线图上两个特定的点。第一个点是阶跃响应上升到最终稳定值之前的那个瞬间点。第二个点是阶跃响应上升到最终稳定值的那个瞬间点。 我们可以通过以下步骤来求解上升时间: 1. 使用step函数得到阶跃响应图像: ```matlab sys = tf(num,den) [y,t] = step(sys); plot(t,y); ``` 这里的num和den是传递函数的分子和分母多项式系数。 2. 找到阶跃响应上升到最终稳定值之前的那个瞬间点。这个点的y值应该是一个介于0和最终稳定值之间的值。 ```matlab [t1, y1] = firstMoment(y, t, 0, stableValue) ``` 这里的firstMoment是一个自定义函数,用于找到阶跃响应上升到特定值的瞬间点。其中stableValue是最终稳定值。 3. 找到阶跃响应上升到最终稳定值的那个瞬间点。这个点的y值应该等于最终稳定值。 ```matlab [t2, y2] = firstMoment(y, t, stableValue, stableValue) ``` 4. 计算上升时间。上升时间等于第二个点的时间减去第一个点的时间。 ```matlab riseTime = t2 - t1; ``` 这样就可以得到系统的上升时间。 需要注意的是,为了使用自定义的firstMoment函数,我们需要在MATLAB中定义该函数。该函数的功能是找到阶跃响应曲线上首次达到指定y值的时间点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值