DevOps

성능 테스트

iksadnorth 2024. 1. 17. 23:27

👣 개념

부하 테스트

1 시간 정도의 부하를 가하면서 TPS[Transaction Per Second]와 응답 시간을 구하는 테스트.

내구성 테스트

8 시간 이상 부하를 가함

스트레스 테스트

피크 트래픽의 2배 부하를 가함

스파이크 테스트

피크 트래픽 이상의 부하를 반복적으로 증가킴

확장성 테스트

더이상 확장하지 못하도록 막는 시스템의 최대치가 무엇인지 확인

볼륨 테스트

영화 데이터처럼 많은 용량의 데이터가 요청 혹은 응답을 대비하는 테스트

 

👣 툴 비교

JMeter

java로 구성됨.

.jmx 파일 생성 후 CLI로 실행 가능

HTTP(S), FTP, SOAP 등등의 다양한 프로토콜 지원

nGrinder

Jython or Groovy 스크립트를 사용해서 시나리오 작성

Custom Library로 테스트 가능

Web UI를 제공

동시에 여러 성능 테스트 가능

Locust

Greenlet를 이용해 수 십만의 유저를 지원

Web-UI로 설정/모니터링 가능

Locust는 모두 코딩으로 해결 해야 함.
성능 테스트 작성에 익숙해지기 위해서는 기본적인 Python 코딩 경험이 있어야 함.

 

👣 성능 테스트 관련 지표 및 개념

vUser | 가상 사용자 수를 의미함.
Active user | 메뉴, 링크를 누르고 결과가 나오기를 기다리는 유저
Inactive user | 그냥 로드된 페이지를 보고 있는 유저
Concurrent User | 언제든지 부하를 줄 수 있는 유저
Idle User | 아예 부하를 줄 확률이 없는 유저

Visit Time | 접속한 페이지를 들어오고 나가는데까지 시간
Request Time | 요청하는데 걸리는 시간
Response Time | 요청에 대한 의답이 오는 시간
Think Time | 응답을 한 이후 다음 요청까지 걸리는 시간
Request Interval | 요청과 다음 요청 사이의 간격
TPS | 단위 시간당 서버에서 요청을 처리할 수 있는 양

CPU Usage/Used | Host CPU의 사용량 혹은 사용률
Memory Usage/Used | Host Memory의 사용량 혹은 사용률
Disk I/O Time | 요청을 디스크 위체 작성, 읽기 작업 수행 시간
Network I/O throughput | 네트워크 인터페이스에서 사용하는 초당 비트수
Active Thread Count | 활성 스레드 수