테스트 항목
Application
- TPS (Transaction Per Second)
- 응답시간 (Response Time)
Middleware
- Message Queue
-
RabbitMQ
- Database
-
Mysql (slow query, Index)
- Web Server
-
Apache (Network Outbound io <Bandwidth>)
-
Tomcat (Idle Tread)
Infra
- CPU
- Memory (Swapping)
- Disk IO (파일 시스템)
- Network IO (고용량의 파일이나 이미지 전송에서 병목)
테스트 종류
성능 (Performance) 테스트
- 시스템의 요소가 특정 상황에서 어느 정도의 성능을 보이지는 측정하는 테스트
-
기존 시스템에 대한 BenchMarking 하는 것
-
Application의 결함을 찾는 목적은 아님
-
성능에 대한 정확하고 면밀한 모니터링을 진행
부하 (Load) 테스트
- 임계치의 한계에 도달할 때까지 시스템의 부하를 꾸준히 증가시키며 진행하는 테스트
-
부하 상황에서 시스템이 어떻게 동작하는지 모니터링하고 정보 확인
-
발생시키는 부하는 실제 시스템에 적용될 예상 트래픽이어야함
-
Volume Test 또는 Endurance Test라고 함
-
Web Server, Database, Infra등 모든 요소의 한계를 찾아서 미래에 발생할 부하에 대하는 것이 목표
스트레스 (Stress) 테스트
- 시스템 과부하 상태에서 어떻게 작동하는지를 검사하는 테스트
-
시스템의 실패를 확인하고 모니터링하는 과정이 정상적으로 이루어지는지
-
민감한 정보나 보안상의 문제가 노출되지 않는지
-
장애 조치와 복구 절차과 효과적이고 효율적인지
Soak 테스트
- 한참 동안 부하를 가해서 메모리 누수나 자원 누수를 알아내는 테스트
Negative 테스트
- 부하를 발생시킨 상태에서 특정 시스템 구성 요소 중 일부를 제거하는 테스트
Fatigue 테스트
- 대역폭 용량을 뛰어넘는 부하를 발생시키는 테스트
Graph를 통한 분석
포화점 (Saturation Poing)
- 시스템은 언제나 처리에 한계가 있으므로 어느 순간에 더 이상 증가하지 않고 그래프가 꺽임
버클존 (Buckle Zone)
- 시스템 과부하로 인해 내부 자원이 서로 경쟁 상태나 적체 상태가 심해지기 때문에 최대 처리량보다 더 떨어지는 경우가 발생
최대 성능, 비즈니스 관점 최대 성능
- 포화점에서 얻는 최대 처리량이 실제 최대 성능으로 보면 안됨
- 비즈니스 관점에서 최대 처리량을 재정의하고 최대 처리량과 여유를 두는 것이 좋음
테스트 용어
Workload
- 주어진 시간동안 컴퓨터가 처리한 일의 양 또는 그러기 위해 부과된 연속된 일
- Web 기반 시스템에서는 주로 HTTP 요청이 Workload 역활을 함
Metric
- 응답시간 (Response Time)
- 출력량 (Througput)
- TPS (Transaction Per Second)
- CPU의 연산 속더인 MFLOPS (Millions of Floation-point Operations Per Second)
응답 시간 (Response Time)
- 인터넷에서 패킷이 라우팅되는 시간도 포함
- 평균 응답 시간 (Mean Time)이 Web Server형 시스템의 성능 분석에서 중요
처리량 (Throughput)
- PPS (page Per Second) : 웹 시스템에서 특정 페이지에 대한 요청
- RPS (Request Per Second)
- TPS (Transaction Per Second) : 데이터베이스의 트랜잭션 기반 시스템에서 사용
- BPS (Bits Per Second) : 네트워크의 경우는 초당 비트 수
Reliability
- 에러의 확률 혹은 에러 간의 평균 시간으로 측정
- Error-Free Seconds
Bottleneck
- 구성 컴포넌트 중 활용도가 가장 높은 컴포넌트를 의미
- 튜닝이란 활용도가 100%인 컴포넌트가 정말 100%로 사용되어야 하는가를 확인하고, 각 컴포넌트 간 활용도의 밸런스를 맞추어서 전체 시스템이 가장 좋은 성능을 발휘하도록 개선하는 작업
Tool
Monitoring Tool
- APM (Application Performance Monitoring)
-
제니퍼
-
Scouter
-
Pinpoint
-
기타 등등
Testing Tool
- JMeter
- NGrinder
- LoadRunner
Infra Tool
- Cacti
- Ganglia
- Linux Command
참조 URL
https://nesoy.github.io/articles/2018-08/Testing-Performance
'Web' 카테고리의 다른 글
HAProxy (2) | 2020.01.17 |
---|---|
Keepalived & VRRP (0) | 2020.01.17 |
PinPoint (0) | 2019.04.09 |
Crawling (크롤링) (0) | 2019.04.09 |
REST & RESTful & REST API (0) | 2019.04.09 |