일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- mysql
- create table
- ssh
- port forwarding
- appium
- openpyxl
- kitura
- rethinkdb
- STF_PortForwarding
- ubuntu
- sshpass
- centos
- Jupyter Notebook
- nohup
- perfect
- postgres
- STF
- nGrinder
- Materials
- appium server
- 28015
- GoCD
- 실행권한
- insert
- ftp
- Jupyter
- postgresql
- nmap
- PYTHON
- SWIFT
- Today
- Total
don't stop believing
Locust 설치와 기본 확인 본문
API load Test Tool인 Locust를 설치해 봅시다.
python이 설치되어 있어야 하며 pip으로 locust를 설치할 수 있습니다. Lucust는 Python 2.7과 3.3, 3.4, 3.5, 3.6을 지원합니다.
$ pip3 install locustio
기본적으로 버전은 확인하고 가야겠죠?
$ locust --version [2017-12-05 18:05:56,115] TongChunui-MacBook-Pro.local/INFO/stdout: Locust 0.8.1 [2017-12-05 18:05:56,115] TongChunui-MacBook-Pro.local/INFO/stdout:
Mac에 설치한다면 libev도 설치해 줍니다.
$ brew install libev
Locust는 실행하기 전 Python Code를 먼저 작성해야 합니다.
저는 예제 코드를 아래처럼 작성했습니다. 테스트에 사용된 API는 Korbit API입니다.
[https://apidocs.korbit.co.kr/]
from locust import HttpLocust, TaskSet, task import json class UserBehavior(TaskSet): token_type = "" access_token = "" def on_start(self): self.getToken() def getToken(self): CLIENT_ID = "**********************" CLIENT_SECRET = "***********************" EMAIL = "tongchun@gmail.com" PASSWORD = "***********" GRANT = "password" url = "/v1/oauth2/access_token?client_id=%s&client_secret=%s&username=%s&password=%s&grant_type=%s" % (CLIENT_ID, CLIENT_SECRET, EMAIL, PASSWORD, GRANT) response = self.client.post(url, name='getToken') # print('Response status code:', response.status_code) # print('Response content:', response.content) respJson = json.loads(response.content) self.token_type = respJson['token_type'] self.access_token = respJson['access_token'] @task(1) def getUserInfo(self): headerString = ('%s %s') % (self.token_type, self.access_token) url = "/v1/user/info" response = self.client.get(url, headers={"Authorization": headerString}, name='getUserInfo') # print('Response status code:', response.status_code) # print('Response content:', response.content) @task(2) def getTicket(self): currency_pair = "btc_krw" url = "/v1/ticker?currency_pair=%s" % currency_pair response = self.client.get(url, name='getTicket') # print('Response status code:', response.status_code) # print('Response content:', response.content) @task(2) def getDetailedTicket(self): currency_pair = "btc_krw" url = "/v1/ticker/detailed?currency_pair=%s" % currency_pair response = self.client.get(url, name='getDetailedTicket') # print('Response status code:', response.status_code) # print('Response content:', response.content) @task(5) def getConstants(self): url = "/v1/constants" response = self.client.get(url, name='getConstants') # print('Response status code:', response.status_code) # print('Response content:', response.content) class WebsiteUser(HttpLocust): host = "https://api.korbit.co.kr" task_set = UserBehavior min_wait = 1000 max_wait = 5000
locust 실행 시 python 파일명을 옵션으로 넘겨줍니다. 그리고 load test 대상의 host도 넘겨줍니다.
host는 python 파일안에 정의되어 있다면 생략해도 됩니다.
$ locust -f first-test-locust.py --host=https://api.korbit.co.kr [2017-12-06 15:56:05,628] TongChunui-MacBook-Pro.local/INFO/locust.main: Starting web monitor at *:8089 [2017-12-06 15:56:05,628] TongChunui-MacBook-Pro.local/INFO/locust.main: Starting Locust 0.8.1
브라우저를 열고 http://127.0.0.1:8089를 호출합니다
가상 유저 수(Number of users to simulate)와 초당 실행 수(users spawned/second)를 입력하고 Start swarming을 클릭합니다.
그럼 Locust는 작성한 Python Code를 실행하며 결과를 기록합니다.
Locust를 실행시킨 터미널을에서 Control + c를 눌러 Locust를 종료하면 실행 결과와 request에 대반 분포를 확인할 수 있습니다.
더 많은 가상 유저를 만들어 내기 위해 master와 multiple slave의 분산 구조를 구성할 수 있습니다.
먼저 master 서버는 --master 옵션을 추가해서 실행합니다.
locust -f first-test-locust.py --master --host=https://api.korbit.co.kr
slave 서버는 아래와 같이 실행시킵니다.
locust -f first-test-locust.py --slave --master-host=http:192.168.0.33 --host=https://api.korbit.co.kr
만약 같은 machine에서 실행한다면 --master-host를 제거합니다. --slave 옵션을 주면 master-host의 기본 값은 127.0.0.1이 됩니다.
locust -f first-test-locust.py --slave --host=https://api.korbit.co.kr
slave가 붙으면 우측 상단에 Slave 수가 표시됩니다.
여기까지 Locust설치와 기본 사용이었습니다.