시스템 성능 지표
시스템 성능을 가리킬 때 응답과 처리량이라는 지표가 자주 사용된다.
응답
- 처리 하나당 소요 시간, 응답이 걸리는 시간
처리량
- 단위 시간당 처리하는 양, 초당 받아들이는 사용자 수
퍼센타일
- 실제 시스템에서는 단일 사용자 응답만으로는 부족하기 때문에 여러 사용자의 평균값을 이용한다. 이때 통계학에서 사용되는 퍼센타일 개념을 이용한다.
- 극단적으로 응답 시간이 긴 사용자는 다른 문제를 내포하고 있을 수 있기 때문에 오차라고 생각하고 평균값에 포함하지 않는다.
병목 현상
처리량을 제한하고 있는 요인
병목 지점
- 병목 현상이 발생하는 위치
어떻게 해결하는가?
- 각 서버의 처리량이나 응답 상황 로그를 취득해서 어느 서버가 병목 지점이 되고 있는지 찾아내는 것부터 시작해야 한다.
이러한 이유로 APM을 설치해서 병목 지점을 확인합니다.
APM이란 application performance management 로 어플리케이션 성능 관리 도구라고 보면 됩니다.
APM 도구 예시 - naver pinpoint
was(tomcat) 까지 응답시간, db까지의 응답 시간 등을 확인으로 병목지점 찾음
시스템 이용자 수를 제한
- 유량 제어는 적절한 계층에서 이용자 수를 제한하는 접근법이다.
- 무슨 말이냐면 N 이상의 트래픽이 들어오면 로드밸런서 등에서 503 Service Unavailable 에러를 내보내는 것으로 근본적인 해결책이 되지 못함.
튜닝
- 병목이 발생하는 지점을 파악해서 적절히 튜닝.
병목 현상의 종류
- cpu
- 메모리
- 디스크 I / O
- 네트워크
- 애플리케이션
CPU 병목 현상
먼저 cpu 사용률은 처리 효율성 → 병목현상 유무와는 관련 X
- CPU 응답이 느리다
- 주의할 점은 CPU 사용률이 100%라고 병목이 발생한 것은 아님
- 100% CPU에서 처리할 수 있는 작업 수 = 작업 큐에 남은 작업수 → 괜찮음
⇒ 사용자 관점에서 응답 속도나 시스템 전체 처리량을 확인해야한다.
주 원인
- CPU를 이용하는 처리가 많아서 대기 행렬이 발생하고 있다.
- 처리량 측면의 문제를 의미.
해결 방법
- cpu 코어 수를 늘리거나 수평 분할에 따른 서버수를 늘림(스케일 아웃) - 물리적 성능 향상
- 처리 능력을 향상시키는 방법 (스케일 업) - cpu 클럭수, 성능 향상
- 병렬로 처리한다
- 처리를 분할해서 다수의 CPU 코어에게 동시 처리를 시키는 것.
I/O 비동기화
- CPU 처리와 I/O 처리를 동시에 진행할 수 있기 때문에 리소스 사용 상태가 개선된다.
트래픽이 많이 발생하는 곳에서 Spring Webflux이 유행하는 이유 (비동기&논블로킹)
메모리 병목 현상
- 프로세스가 가동해서 어떤 처리를 하려면 반드시 전용 메모리 영역이 필요하다. 하지만 서버상의 메모리 영역은 유한하다.
해결 방법
- 가상 메모리 (스왑 메모리)
- 메모리 증설
디스크 I/O 병목 현상
하드 디스크 등의 저장 장치에 대한 I/O 병목. (메모리와 비교해서 디스크 I/O는 매우 느리다.)
외부 저장소
SAN(storage area network) NAS(network attached strorage)이 두 종류가 대표적
처리량 관점 - 디스크 수에 따라 처리량이 증가하므로 처리량 관점에서 외부 저장소가 좋음
응답 속도 관점 - 가까우면 빠르다. 즉 로컬 디스크가 빠르다. 로컬 저장소 또는 캐시
순차 I/O, 랜덤 I/O
단일 디스크일 경우 순차 방식이 빠르고 랜덤이 느림
예시) 3개의 데이터를 가져와야 할 경우
단일 - 단 1번의 회전으로 모든 데이터를 가지고 옴
랜덤 - 3번의 디스크 회전이 일어나야지 데이터를 가지고 올 수 있음
- 순차 I/O는 선두부터 차례대로 액세스(읽기, 쓰기)하는 방식.
- 랜덤 액세스는 헤드가 움직이면서 해당 위치로 바로 건너뛰는 액세스(읽기, 쓰기) 방식.
'책 > 그림으로 공부하는 IT인프라 구조' 카테고리의 다른 글
무정지를 위한 인프라 구조(2) (0) | 2021.10.10 |
---|---|
무정지를 위한 인프라 구조(1) (0) | 2021.10.08 |
시스템을 연결하는 네트워크 구조 (0) | 2021.10.07 |
인프라를 지탱하는 기본 이론 - 직렬과 병렬, 동기와 비동기 (0) | 2021.10.05 |
3계층형 시스템 (0) | 2021.09.27 |