python 성능 테스트 도구 쓰기 (一)
JMeter로 gin과 flask 인터페이스의 성능을 테스트하는데 차이가 매우 크다.
왜 나는 성능 도구를 써 보지 않는지, 성능 도구의 핵심은 병발과 요청이다.
요청은 Python의 requests 라이브러리를 선택할 수 있습니다.
병발은python의 프로세스, 스레드, 협동 시뮬레이션을 통해 할 수 있습니다.
이렇게 생각하면 그리 어렵지 않다.
의존 라이브러리
requests==2.22.0
gevent==20.9.0
numpy==1.19.2
requests 여러분은 낯설지 않습니다, HTTP 요청 라이브러리.gevent는python 프로토콜 라이브러리로 프로토콜 시뮬레이션을 통해 자원을 절약하고 같은 설정에서 더 많은 프로토콜을 시뮬레이션할 수 있습니다.
numpy는python의 데이터 계산 라이브러리로 대량의 그룹수와 매트릭스 연산을 제공합니다. 여기서 목록의 평균값을 구합니다.
구현 스크립트
자, 이제 핸드폰 코드를 쓰기 시작합니다.
from __future__ import print_function
import time
import gevent
from gevent import monkey
monkey.patch_all()
import requests
from numpy import mean
users = 10 #
numbers = 100 #
req_url = "http://127.0.0.1:8080/user/tom" # URL
print(" URL: {url}".format(url=req_url))
print(" :{}, : {}".format(users, numbers))
print("============== Running ===================")
pass_number = 0
fail_number = 0
run_time_list = []
def running(url):
global fail_number
global pass_number
for _ in range(numbers):
start_time = time.time()
r = requests.get(url)
if r.status_code == 200:
pass_number = pass_number + 1
print(".", end="")
else:
fail_number = fail_number + 1
print("F", end="")
end_time = time.time()
run_time = round(end_time - start_time, 4)
run_time_list.append(run_time)
jobs = [gevent.spawn(running, req_url) for _url in range(users)]
gevent.wait(jobs)
print("
============== Results ===================")
print(" : {} s".format(str(max(run_time_list))))
print(" : {} s".format(str(min(run_time_list))))
print(" : {} s".format(str(round(mean(run_time_list), 4))))
print(" ", pass_number)
print(" ", fail_number)
print("============== end ===================")
사고방식을 설계하다JMeter에서 스레드 그룹을 만드는 데는 두 개의 매개 변수 스레드와 순환수가 있습니다. 즉, 호수와 요청수로 몇 명의 사용자를 설정하고, 한 사용자의 사용자가 몇 번을 뛰고, 사용자 수는 협동 시뮬레이션을 통해, 매번 사용자의 운행 횟수는 for순환을 통해 이루어집니다.
요청은 비교적 간단합니다. 직접requests를 통해 요청을 보냅니다.영향의 상태 코드가 200인지 아닌지를 판단하여 성공 여부를 판단하고, 성공과 실패의 요청 개수를 각각 계산한다.
요청 시간 통계에 관해서는 매번 요청 전후에 현재 시간 스탬프를 얻고 시간 차이를 계산하는 것이 하나의 인터페이스의 호출 시간입니다.최대, 최소, 평균적으로 계산을 통해 쉽게 얻을 수 있다.
> python3 ab.py
URL: http://127.0.0.1:8080/user/tom
:10, : 100
============== Running ===================
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
...............................................................................................................
.
============== Results ===================
: 0.0352 s
: 0.0036 s
: 0.0204 s
1000
0
============== end ===================
후속ab.py 스크립트를 ab 명령행 도구로 만듭니다.
더 많은 요청 형식 (get/post/put/delete) 과 인자를 지원합니다.
더 많은 통계적 차원, 흡수량, 삼키기율
가동 시간 증가, 사고 시간 등
...
이상은python이 성능 테스트 도구(一)에 대한 상세한 내용을 쓴 것입니다. 더 많은python 성능 테스트 도구에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.