性能测试中等待队列

2022-12-03 12:14:39 浏览数 (1)

在调度算法中详细的介绍了不同调度方式在程序中的调度策略,下面继续沿着调度的思路来说在性能测试中的等待队列。调度的核心是为了让底层的服务始终保持在一个可持续运行的一个状态中,再说的具体点就是保持服务的高可用,这样的方式对服务层而言是非常有利的。但是如果客户端发送请求的任务太多,那么就涉及到排队等待,核心是等待时长到底来如何设计了?

一般而言不管是同步的任务还是异步的任务,由于调度策略的机制,都会存在一个最大执行的任务数,比如最大执行的任务数是30,那么当执行的任务数是在30以内,所有的任务都会被执行的,根本不存在排队等待的机制,但是如果需要被执行的任务大于30,那么就需要被排队等待了,至于那些任务排队等待哪些任务获取优先的执行权限,这是调度策略需要干的事。在性能测试的核心的点是需要考虑的是当排队中的任务在等待中的时候,那么是等待多久了?如果等待的时间太久,很显然是很不合理的,而且在测试的过程中需要考虑到执行中的任务一旦释放资源后,排队中的任务能不能很快速的进入到执行的阶段,如果在执行的阶段任务执行失败,是否有重试的机制,如果有的话,那么重试的几次,这些都是需要在测试底层服务的时候需要考虑到的。在队列中很多时候采用的是先进先出的原则。在Python中队列使用的是Queue,使用它更多是来解决进程之间的通信。下面针对Queue结合案例代码详细的演示下队列的先进先出的原则和常用的方法,具体如下:

代码语言:javascript复制
#! /usr/bin/env python
# -*- coding:utf-8 -*-


from multiprocessing import  Queue

def queueTest():
  q=Queue(3)
  for item in range(3):
    q.put(item)
  print('判断队列是否已满:',q.full())
  for item in range(3):
    print(q.get())
  print('判断队列是否为空:',q.empty())

if __name__ == '__main__':
  queueTest()

在Queue中需要特别注意的是,当一个队列已经满了或者是已经为空的情况下,再添加新的元素信息或者是从里面获取元素信息会直接导致卡死,这点需要特别的注意。通过如上的案例代码,往队列里面添加的元素信息是0,1,2,那么往出来取的时候也是0,1,2,这完全符合队列的先进先出的原则。其实使用Queue也可以模拟生产者以及消费者的模式,这里就不详细的举例了。

在等待队列中,需要关注这些信息,具体来说就是执行的方式,需要清楚是同步还是异步的执行面试,第二需要清楚的是执行最大的任务数,以及被执行的任务如果需要排队等待,那么等待的时间是多少,也就是访问等待时间是多久的。线程完整的时间主要是三个部分组成的,分别是:客户端发起请求的时间 访问等待时间 逻辑执行时间 返回客户端的时间,那么如果在性能测试的过程中,一个任务执行的耗时是比较长的,那么就需要判断以及知道到底是哪个部分耗时导致了整体的任务执行耗时。

0 人点赞