Locust Performance 不同于 time() 函数
Locust Performance different from time() function
我写了一个 FastAPI 并尝试使用不同的工具执行负载测试。我发现 Locust 的性能与 time() python 函数有很大不同:
- Locust 显示 min=17ms,max=2469ms,99%=2000ms
- time() 函数显示 min()=3ms,max=1739ms
有人可以解释一下这是为什么吗?哪个更准确?
以下是我的程序:
快速API函数:
app = FastAPI()
@app.post('/predict/')
def predict(request: PredictRequest):
logger.info('Invocation triggered')
start_time = time.time()
response = adapter.predict(request.dict())
latency_time = (time.time() - start_time) * 1000
latency_logger.info(f'Predict call latency: {latency_time} ms')
return response
蝗虫参数:
-u 500 -t 10 -r 500
蝗虫文件:
class User(HttpUser):
wait_time = between(1, 2.5)
host = "http://0.0.0.0:80"
@task
def generate_predict(self):
self.client.post("/predict/",
json={"cid": [],
"user_id": 5768586,
"store_ids": [2725, 2757],
"device_type": "ios"},
name='predict')
蝗虫输出:
蝗虫和时间衡量的是两种不同的事物。 time 是衡量服务器端 运行 仅 adapter.predict
函数需要多长时间。 Locust 测量客户端从您的服务器路由获得响应所花费的时间,这不仅包括您的 adapter.predict
调用,还包括谁知道在那之前和之后的所有其他内容。 “哪个更准确”取决于您要测量的是什么。如果你只是想知道调用adapter.predict
需要多长时间,那么时间会更准确。如果您想知道客户端需要多长时间才能获得您的 /predict
路线的结果,Locust 更准确。
我写了一个 FastAPI 并尝试使用不同的工具执行负载测试。我发现 Locust 的性能与 time() python 函数有很大不同:
- Locust 显示 min=17ms,max=2469ms,99%=2000ms
- time() 函数显示 min()=3ms,max=1739ms
有人可以解释一下这是为什么吗?哪个更准确?
以下是我的程序:
快速API函数:
app = FastAPI()
@app.post('/predict/')
def predict(request: PredictRequest):
logger.info('Invocation triggered')
start_time = time.time()
response = adapter.predict(request.dict())
latency_time = (time.time() - start_time) * 1000
latency_logger.info(f'Predict call latency: {latency_time} ms')
return response
蝗虫参数:
-u 500 -t 10 -r 500
蝗虫文件:
class User(HttpUser):
wait_time = between(1, 2.5)
host = "http://0.0.0.0:80"
@task
def generate_predict(self):
self.client.post("/predict/",
json={"cid": [],
"user_id": 5768586,
"store_ids": [2725, 2757],
"device_type": "ios"},
name='predict')
蝗虫输出:
蝗虫和时间衡量的是两种不同的事物。 time 是衡量服务器端 运行 仅 adapter.predict
函数需要多长时间。 Locust 测量客户端从您的服务器路由获得响应所花费的时间,这不仅包括您的 adapter.predict
调用,还包括谁知道在那之前和之后的所有其他内容。 “哪个更准确”取决于您要测量的是什么。如果你只是想知道调用adapter.predict
需要多长时间,那么时间会更准确。如果您想知道客户端需要多长时间才能获得您的 /predict
路线的结果,Locust 更准确。