Vegeta 로드 테스트 빠른 자습서, GET 예제 포함

로드 테스트는 신뢰할 수 있는 API 또는 어플리케이션을 게시하는 중요한 부분입니다.Vegeta 로드 테스트는 정의된 로드에서 애플리케이션이 제대로 작동하는지 확인합니다.본고에서, 우리는 일부 GET 요청 예시를 통해Vegeta를 사용하여 부하 테스트 수요를 만족시키는 방법을 토론할 것입니다.이것은 단지 go 바이너리 파일이기 때문에, 설정과 사용이 생각보다 훨씬 쉽습니다. 시작합시다.

부하 테스트란 무엇입니까?


간단하게 말하면 부하 테스트는 일부 병렬 요청을 모의하여 응용 프로그램을 테스트함으로써 응용 프로그램이 유사한 실제 장면에서의 행위를 확정하는 것을 의미한다.기본적으로 여러 사용자가 동시에 응용 프로그램을 사용하려고 시도할 때 응용 프로그램이 어떻게 응답하는지 테스트했다.

There are many ways to load test applications/APIs and Vegeta is one of the easiest tools to perform load testing on your APIs or applications.


나는 일찍이 fast and not so fast test에 관한 문장을 쓴 적이 있는데, 이것은 테스트에 관한 더 많은 문장을 읽는 것이다.

선결 조건


주요 주제를 시작하기 전에 몇 가지 선결 조건을 살펴보자.
  • 명령행(CLI 어플리케이션 설치 및 실행)에 능숙함
  • 애플리케이션/API를 서버에 배포하여 테스트합니다.로컬 테스트도 좋지만, 서버가 부하에 있는 행동을 정확하게 설명할 수 없을 수도 있습니다.
  • 부하 테스트 경험(과거 사용 가능locust 또는 Jmeter
  • 대체품과 왜 Vegeta를 선택했는지


    부하 테스트는 여러 가지 방식으로 진행할 수 있으며, 부하 테스트도 여러 가지 다른 SAAS를 가지고 있다.그러나 로컬에 설치된 도구는 응용 프로그램이나 API에 대한 부하 테스트를 하는 좋은 방법이다.나는 과거에 사용한 적이 있다Locust.설정과 실행은 Vegeta 처럼 간단하고 직접적이지 않다.
    또 다른 선택은 사용JMeter이다.Apache JMeter는 모든 기능을 갖춘 부하 테스트 도구로 그 개념을 이해하고 가파른 학습 곡선을 가진 것으로 이해할 수 있다.

    Vegeta is a go-lang binary (and library) so installing and using it is a breeze. There are not many concepts to understand and learn.


    우선, 한 개의 URL만 제공하고, 이 URL이 초당 클릭되기를 원하는 요청 수를 제시합니다.Vegeta는 제공된 주파수로 URL을 클릭하고 이해하기 쉬운 도형에서 HTTP 응답 코드와 응답 시간을 제공합니다.

    The best thing about Vegeta is there is no need to install python or Java to get started. Next, let’s install Vegeta to begin Vegeta load testing.


    Vegeta 설치


    Vegeta의 공식 정의를 살펴보겠습니다.

    Vegeta is a versatile HTTP load testing tool built out of a need to drill HTTP services with a constant request rate. It can be used both as a command-line utility and a library.


    Vegeta를 사용하여 로드 테스트를 시작하는 가장 간단한 방법은 GitHubreleases 페이지에서 올바른 실행 가능한 파일을 다운로드하는 것입니다.본문을 작성할 때 현재 판본은 v12.8.3이다.

    Linux에 설치


    64비트 Linux를 사용하는 경우 다음 명령 세트를 사용하여 Vegeta를 작업할 수 있습니다.
    cd ~/downloads 
    wget https://github.com/tsenart/vegeta/releases/download/v12.8.3/vegeta-12.8.3-linux-amd64.tar.gz 
    tar -zxvf vegeta-12.8.3-linux-amd64.tar.gz chmod +x vegeta ./vegeta --version
    
    어떤 경로에서든 Vegeta를 실행하려면 경로에 기호 링크를 추가하고 ln-s ~/downloads/Vegeta ~/bin/Vegeta와 같은 명령을 실행하면 새 CLI 탭에서 작동합니다.

    Mac에 설치


    다음 명령을 사용하여 Mac에 Vegeta를 설치할 수도 있습니다.
    brew update && brew install vegeta
    
    기기에 golang이 설치되어 있고 Gobin이 경로에 있다면 Vegeta 부하 테스트 여정을 시작할 수 있습니다.
    go get -u github.com/tsenart/vegeta
    
    올바른 설치 여부를 확인합니다.
    vegeta --version
    
    버전 번호가 표시됩니다.

    첫 번째 Vegeta 로드 테스트 명령


    Vegeta 부하 테스트 도구를 사용하는 데는 여러 가지 방법이 있습니다. 이것은 명령줄에서 출력을 가져와 더 빠른 분석을 하는 가장 간단한 방법 중 하나입니다.첫 번째 Vegeta 로드 테스트 명령을 실행하려면 다음과 같이 하십시오.
    echo "GET http://httpbin.org/get" | vegeta attack -duration=5s -rate=5 | vegeta report --type=text
    
    그럼 방금 무슨 일이 있었죠?
  • 이 예에서 URLhttpbin.org/get을 표시하고 Vegeta 공격을 통해 전송했습니다
  • vegeta공격은vegeta부하테스트를 실행하는 주명령으로 초당 5개의 요청, 5초간 지속
  • 이 실행하는 마지막 명령이지만 같은 중요한 명령은vegetareportget입니다. 공격 보고서를 텍스트 형식으로 표시합니다.
  • 다음 예제 출력을 볼 수 있습니다.

    Vegeta 부하 테스트 도구는 요청된 공격 25개를 5초 안에 실행합니다.최소 응답 시간은 240ms, 최대 응답 시간은 510ms, 성공률은 100%입니다.모든 요청이 200으로 되돌아왔다는 뜻이다.그 밖에 더욱 도형화된 출력을 어떻게 보는지 봅시다.

    그래픽 출력이 있는 Vegeta 로드 테스트


    Vegeta 부하 테스트 결과의 또 다른 표현 형식은 이해하기 쉬운 도형이다.다음 명령을 사용하여 그래픽 출력을 얻을 수 있습니다.
    cd && echo "GET http://httpbin.org/get" | vegeta attack -duration=30s -rate=10 -output=results-veg-httpbin-get.bin && cat results-veg-httpbin-get.bin | vegeta plot --title="HTTP Bin GET 10 rps for 30 seconds" > http-bin-get-10rps-30seconds.html
    
    Vegeta를 사용하여 부하 테스트를 수행하는 방법에 대해 살펴보겠습니다httpbin.org.
  • 우리는 cd 명령
  • 을 사용하여 사용자 홈페이지에 들어간다
  • 그리고 GEThttp://httpbin.org/get
  • 를 돌려서vegeta공격의 URL을 설정합니다
  • 이 단계는 우리가 초당 10개의 요청 속도로 httpbin 서버를 공격하고 30초 동안 지속할 때 (따라서 30초 동안 총 300개의 요청이 있을 때) 결과vegeta httbin get에서 출력하도록 지정합니다.bin 파일
  • 현재 이 결과는 바이너리 파일처럼 읽기가 쉽지 않기 때문에 다음에cat으로 이 바이너리 파일의 내용을 읽고 특이한 제목과 파일 이름을 가진vegetaplot에 전달하여 HTML 파일
  • 을 얻는다
  • 생성된 HTML 파일을 열 때 HTML 파일에서 다음 그림을 볼 수 있습니다.

  • 우리는 300개의 요청을 보냈고, 모든 요청은 200개를 되돌렸고, 최대 응답 시간은 552밀리초였다.가장 빠른 응답 시간 중 하나는 234밀리초입니다.이것은 우리에게 명확한 화면을 주었고 HTTP-bin은 30초 안에 초당 10개의 요청을 쉽게 처리할 수 있다.

    I would advise you to not try it many times, HTTPBin.org might block your IP thinking you are DDOSing their system.


    일반적으로 Vegeta를 사용하여 자신의 서비스에 대한 부하 테스트를 어떻게 하는지 알 수 있습니다.

    내 서비스는 인증 영패를 사용한다


    알겠습니다. 모든 서비스는 모든 사람에게 개방되지 않고 대부분 JWT 또는 다른 방식으로 사용자에게 신분 검증과 권한을 부여합니다.이러한 서비스를 테스트하려면 다음 명령을 사용합니다.
    cd && echo "GET http://httpbin.org/get" | vegeta attack -header "authorization: Bearer <your-token-here>" -duration=40s -rate=10 -output=results-veg-token.bin && cat results-veg-token.bin | vegeta plot --title="HTTP Get with token" > http-get-token.html
    
    이 예는 위와 같은 패턴을 사용했는데, 여기에서의 주요 차이점은vegeta 부하 테스트에 사용되는vegeta 공격 명령에서-headerparam을 사용했다는 것이다.

    If you want to test an HTTP POST with a custom body please refer to the Vegeta docs. It is best to test the GET APIs to know the load unless you have a write-heavy application/API.


    테스트 URL은 어떻게 로드합니까?


    Vegeta를 사용하여 여러 URL을 서로 다른 HTTP 방법으로 테스트하는 것도 비교적 쉽습니다.다음 예제에서는 몇 가지 GET 요청에 대해 살펴보겠습니다.
    GET http://httpbin.org/get 
    GET [http://httpbin.org/ip](http://httpbin.org/ip)
    
  • 현재 첫 번째 텍스트 출력 예시와 유사하게 대상 폴더에서 이 명령을 실행합니다.txt 파일 만들기:vegeta공격-지속시간=5s-속도=5-목표=목표.txt | vegeta 보고서 - 유형 = 텍스트
  • 다음과 같은 텍스트 출력을 볼 수 있습니다.

  • 보시다시피 Vegeta를 사용하여 여러 URL에 대한 부하 테스트를 하는 것은 매우 쉽습니다.Vegeta 로드 테스트는 POST 및 PUT 같은 다른 HTTP 동사를 쉽게 테스트할 수 있습니다.Vegetadocs를 참조하십시오.

    결론


    이 글은 베지타로 부하 테스트를 할 때 페인트로 표면을 긁는 것과 같다.Vegeta 로드 테스트는 많은 고급 기능을 제공합니다.베지타는 많은 경우에 유용하다.Vegeta를 사용하여 Google Cloud 함수를 로드하고 Google Cloud는 동일한 코드로 실행하여 이 두 함수 간의 응답 시간 차이talk를 확인합니다.이 두 서비스를 비교한 도표는 차이를 명확하게 나타냈다.
    프로덕션에 투입할 어플리케이션이나 API를 부하 테스트하는 것이 중요합니다.

    We once had to open up an API to a much higher load than it would normally get. Our load testing with Vegeta really helped us determine the resources and level of horizontal scaling the API would need to work without any issues.


    Vegeta 덕분에 다른 도구나 서비스를 사용하는 것보다 훨씬 쉬워요.즐거운 부하와 스트레스 테스트!

    좋은 웹페이지 즐겨찾기