반응형
응답과 처리량
시스템 성능을 가리킬 때 응답과 처리량이라는 지표가 자주 사용된다.
응답
- 처리 하나당 소요 시간을 의미.
- 응답이 걸리는 시간
처리량
- 단위 시간당 처리하는 양
- 초당 받아들이는 사용자 수
퍼센타일
- 실제 시스템에서는 단일 사용자 응답만으로는 부족하기 때문에 여러 사용자의 평균값을 이용한다. 이때 통계학에서 사용되는 퍼센타일 개념을 이용한다.
- 극단적으로 응답 시간이 긴 사용자는 다른 문제를 내포하고 있을 수 있기 때문에 오차라고 생각하고 평균값에 포함하지 않는다.
병목 현상
처리량을 제한하고 있는 요인
병목 지점
- 병목 현상이 발생하는 위치
병목 현상은 어떻게 해결하는가?
- 성능 분석의 시작은 먼저 이 병목 현상이 발생하고 있는 위치를 정확히 파악하는 것이다.
- 이를 위해서는 각 서버의 처리량이나 응답 상황 로그를 취득해서 어느 서버가 병목 지점이 되고 있는지 찾아내는 것부터 시작해야 한다.
해결 방법
튜닝
- 병목 위치를 파악해서 어떻게든 해결하는 것이다.
- 튜닝 시에는 병목 위치를 작은 단위로 세분화해서 병목 영역을 더 집중적으로 파헤치는 접근법이 유효하다.
시스템 이용자 수를 제한하는 것
- 유량 제어는 적절한 계층에서 이용자 수를 제한하는 접근법이다.
- 유량 제어에서는 사용자에게 에러를 반환하는 것이 전부라서 근본적인 해결책이 되지 못함.
- 수평 분할을 통해 서버를 증설함으로써 시스템 전체 허용량을 늘리는 접근법을 병용할 필요가 있다.
병목 현상의 종류
CPU 병목 현상
- 주의할 점은 CPU 사용률은 처리 효율성을 나타내는 것으로 병목 현상 유무와는 관계가 없다.
CPU에 기인한 성능 문제의 주요 원인
- CPU를 이용하는 처리가 많아서 대기 행렬이 발생하고 있다.
- 처리량 측면의 문제를 의미.
해결 방법
- 하드웨어의 CPU 코어 수를 늘리거나 수평 분할에 따른 서버 수를 늘리는 스케일 아웃 방법 존재.
- 대규모 웹 서비스 시스템에서는 사용자 수가 폭발적으로 증가하기 때문에, 사용자 증가에 맞추어 서버를 추가해서 스케일아웃하는 아키텍처를 도입하는 것이 필수다.
- CPU 응답이 느리다
처리 능력을 향상시키는 방법 (스케일 업)
- 단, 스케일업으로 성능을 향상하는 것은 한계가 있다.
병렬로 처리한다
- 처리를 분할해서 다수의 CPU 코어에게 동시 처리를 시키는 것.
- 시스템에서 처리를 병렬화, 멀티 프로세스화, 멀티 스레드 화해서 복수의 CPU 코어를 이용함으로써 전체적인 처리 응답 시간을 향상할 수 있다.
대부분의 애플리케이션에서는 CPU 사용률이 100%에 도달하는 경우가 거의 없다. 그전에 디스크 I/O나 네트워크 I/O에서 막히는 경우가 많기 때문이다.
처리 다중화
- 처리를 다중화해서 CPU를 적절하게 활용하는 것.
I/O 비동기화
- 비동기 I/O를 이용하면 프로세스는 I/O 처리 완료를 기다리지 않고 다음으로 넘어갈 수 있다.
- CPU 처리와 I/O 처리를 동시에 진행할 수 있기 때문에 리소스 사용 상태가 개선된다.
메모리 병목 현상
메모리 영역의 병목 현상은 크게 두 가지로 나눌 수 있다.
- 영역 부족
- 동일 영역의 경합
영역 부족에 의한 병목 현상
- 프로세스가 가동해서 어떤 처리를 하려면 반드시 전용 메모리 영역이 필요하다. 하지만 서버상의 메모리 영역은 유한하다.
- 이 유한한 메모리 영역을 부족하지 않도록 OS 커널 측에서 페이징, 스와핑이라는 처리를 해서 빈 메모리를 확보하는 구조가 있다.
가상 메모리
- 부족한 부분은 디스크 영역으로 보완해서 가상적인 큰 메모리가 있다는 것을 보여주는 기술.
동일 데이터에 대한 병목 현상
- 특정 영역을 복수의 프로세스가 공유하는 경우, 메모리 영역을 참조 또는 갱신할 때 누군간가 그 영역을 관리할 필요가 생긴다.
- 오라클 DB에서는 래치 구조를 이용한다.
- 래치에서는 참조나 갱신을 하고 싶은 프로세스가 서로 경합해서 빠른 쪽이 그 영역을 독점한다. 독점돼 있기 때문에 자신 외의 프로세스가 같은 영역을 갱신하는 일은 없다.
디스크 I/O 병목 현상
하드 디스크 등의 저장 장치에 대한 I/O 병목.
메모리와 비교해서 디스크 I/O는 매우 느리다.
외부 저장소
처리량이라는 관점
- 대부분의 로컬 디스크는 서너 대의 디스크로 RAID를 구성하고 ,캐시로는 서버의 OS 메모리를 이용한다.
- 이에 비해 외부 저장소는 수십 대에서 수백 대 단위의 디스크를 배치하고, 거기에 캐시 전용 메모리 영역까지 갖추고 있다.
- 디스크 수에 따라 처리량이 증가하므로 처리량 관점에서는 외부 저장소가 압도적으로 유리하다.
응답 속도 관점
- 단일 응답은 로컬 디스크가 가장 빠르다.
- 이 차이를 따라잡기 위해 외부 저장소는 자신이 가진 메모리 영역을 잘 활용해서 데이터 캐시를 효율적으로 작성함으로써 응답 속도를 개선하는 노력을 하고 있다.
순차 I/O, 랜덤 I/O
- 디스크 I/O에는 순차 액세스와 랜덤 액세스가 있다.
- 순차는 선두부터 차례대로 액세스(읽기, 쓰기)하는 방식.
- 랜덤 액세스는 헤드가 움직이면서 해당 위치로 바로 건너뛰는 액세스(읽기, 쓰기) 방식.
- CD로 예를 들면 순차 액세스는 최고속으로 빠르게 회전하고 있는 형태이고, 랜덤 액세스는 항상 해당 부분을 찾고 있는 형태이다.
- 단일 디스크가 기록 위치인 경우는 순차 방식이 빠르고 랜덤은 느리다.
반응형
'공통 > 인프라 & 시스템 설계' 카테고리의 다른 글
[대규모 서비스를 지탱하는 기술] 대규모 서비스의 어려움 (0) | 2021.07.07 |
---|---|
RAID 정리 (RAID 개념 및 종류) (1) | 2021.05.27 |
[그림으로 공부하는 IT인프라 구조] 7장 정리 (0) | 2021.05.20 |
[그림으로 공부하는 IT인프라 구조] 6장 정리 (0) | 2021.05.18 |
[그림으로 공부하는 IT인프라 구조] 5장 정리 (0) | 2021.05.17 |