본문 바로가기
서버인프라/모니터링

부하테스트 Tools locust

by techwold ted 2023. 2. 23.

오늘은 웹 성능 부하 테스트를 진행 하려 합니다.

간단한 예시로 locust의 강점을 잘 살려서 진행해 보겠습니다.

 

1. 설치

apt install python3 python3-pip
pip3 install locust

 

2. 실행

mkdir ./locust
cd ./locust
vi locustfile.py
from locust import HttpUser, task

class HelloWorldUser(HttpUser):
    @task
    def hello_world(self):
        self.client.get("/ping")
        self.client.get("/ted")
# locust
[2023-02-23 11:12:51,504] master/WARNING/locust.main: System open file limit '1024' is below minimum setting '10000'.
It's not high enough for load testing, and the OS didn't allow locust to increase it by itself.
See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-number-of-open-files-limit for more info.
[2023-02-23 11:12:51,505] master/INFO/locust.main: Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)
[2023-02-23 11:12:51,524] master/INFO/locust.main: Starting Locust 2.14.2

 

3. 테스트 서버 코드 작성

package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func ping(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"message": "pong",
	})
}

func ted(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
    	"message": "ted",
    }
}

func main() {
	r := gin.Default()

	r.GET("/ping", ping)
	r.GET("/ted", ted)
	r.Run(":8081") // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
go build -o test_locust main.go

 

4. go test code 실행

./test_locust
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /ping                     --> main.ping (4 handlers)
[GIN-debug] GET    /sakila                   --> main.getProducts (4 handlers)
[GIN-debug] GET    /index                    --> main.ted (4 handlers)
[GIN-debug] GET    /qqqoe                    --> main.ted (4 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8081

 

5. locust web_page 실행

  • Number of user : 최대 사용자의 수 정의
  • Spawn rate : 초당 생성할 사용자의 수

위에서 정의한 uri호출을 해보겠습니다

위 설정은 Number of users : 1000 | Spawn rate : 10 으로 설정합니다. 그리고 Host 는 go로 만들어진 코드를 올린 서버를 의미 합니다. 테스트로 하니 같은 서버에서 실행 합니다.

 

Total requests per Second
Response Times
Users
Statistics

간편한 관리 도구 이며, 쉽게 사용 할 수 있습니다.

'서버인프라 > 모니터링' 카테고리의 다른 글

Zabbix Template 생성  (35) 2024.02.26
Zabbix Slack Alert  (30) 2024.02.22
Zabbix 설치  (35) 2024.02.21

댓글