오늘은 웹 성능 부하 테스트를 진행 하려 합니다.
간단한 예시로 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로 만들어진 코드를 올린 서버를 의미 합니다. 테스트로 하니 같은 서버에서 실행 합니다.
간편한 관리 도구 이며, 쉽게 사용 할 수 있습니다.
'서버인프라 > 모니터링' 카테고리의 다른 글
Zabbix Template 생성 (35) | 2024.02.26 |
---|---|
Zabbix Slack Alert (30) | 2024.02.22 |
Zabbix 설치 (35) | 2024.02.21 |
댓글