python 성능 테스트 도구 쓰기 (一)

국경일에 go의 gin 고성능 테스트 프레임워크를 다시 배웠다.
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 성능 테스트 도구에 대한 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기