-
Http 서버 부하 테스트CS/컴퓨터네트워크 2023. 10. 5. 17:44
오늘은 Http 서버의 부하 테스트(load test)를 해보려고 한다.
나는 테스팅 대상 서버로 저번 포스팅에서 구현했던 tcp_http_server를 이용하겠다.
테스트를 위한 도구로는, 오픈소스 로드 테스트 도구인 Locust를 사용할 것이다.
그 전에, Load test가 무엇인지부터 알고 들어가보자.
Stress test / Load test
stress test : 극한의 환경에서 시스템이 에러 컨트롤을 할 수 있는지 테스트하는 것
- 극한 조건에서 시스템의 동작을 모니터링 하기 위한 것이다. 스트레스 테스트는 압도적인 데이터나 리소스를 사용하여 테스트함으로써, 시스템을 '중단'시키려 한다.
에러 메세지, 시스템 복원 등을 측정한다.
load test : 정상적인 작업 부하 조건에서 장치의 작동을 테스트하는 것.
-실제 작업 부하를 테스트하거나 시뮬레이션 하기 위한 것으로, 부하테스트는 기계를 파손시키지 않는다.
사용자 수, 동시 사용자, 응답속도 등을 측정한다.
더 자세한 내용을 알고싶으면, 아래 링크를 참조하면 되겠다.
-출처 : https://medium.com/dana-engineering/load-testing-at-web-application-api-using-locust-2b297c5771ab
Load Testing at Web Application API Using Locust
Load Testing, what is it?
medium.com
우리가 사용하고자 하는 Locust는,
Load test를 하기 위한 도구이다.
1. 처음으로 할 일은, locustfile.py 파일을 생성해보는 것이다.
from locust import HttpUser, task class User(HttpUser): @task def get_index(self): self.client.get('/') self.client.get('/style.css') self.client.get('/main.js') self.client.get('/image.jpg')
나는 html 파일 뿐만 아니라, css와 js, jpg파일을 모두 불러오는 서버를 테스트하려하기 때문에, 위와같이 코드를 작성하였다.
위에서 작성한 User 클래스는, locust 실행시 하나의 클라이언트 객체가 된다.
하나의 클라이언트 객체가 각각의 파일에 대해 get메소드를 요청하는 내용을 코딩한 것이다.
(참고로, '/'를 요청시, default값으로 index.html을 불러온다. html에서 'index'는 'main'과 비슷한 느낌인듯)
파이썬 패키지에 locust가 없다면 추가해주면 된다.
나의 경우 파이참을 사용하고 있고, 왼쪽 하단에 보이는 Python Packages에서 locust검색 후 추가해주었다.
2. 이제 명령창에서 locust를 실행시켜보자.
나는 wsl 명령창을 이용하였다.
locustfile.py가 있는 디렉터리로 이동 후 명령을 입력해야한다는 점을 유의하자
이렇게 locust 명령을 실행해준 뒤, localhost:8089 주소로 들어가보면, 아래와 같은 페이지가 뜬다.
가상 유저 수, 초당 실행 수, 마지막은 실험하고자 하는 서버의 주소를 넣어주면 된다.
3. 테스트 하고자 하는 서버를 실행한다.
나는 저번에 만들어둔 서버를 그대로 이용할 것이다.
wsl 명령창을 이용하여 서버를 실행하였다.
Host에는 http://localhost: + 자신이 매핑해준 포트 번호 를 적어주면 된다.
Start swarming 버튼을 누르면,
위 그림과 같이 서버의 성능을 여러 지표들로 측정할 수 있다.
'CS > 컴퓨터네트워크' 카테고리의 다른 글
DNS - Domain Name System (1) 2023.10.03 소켓을 사용한 HTTP 서버 만들기 - 파이썬 (0) 2023.09.26