[8장] 성능 향상을 위한 인프라 구조
성능 분석의 시작은 병목현상의 위치를 정확히 파악하는 것. 각 서버의 처리량이나 응답 상황 로그를 취득하는 방법 사용. 3계층 그림을 그려가면서 진행하면 커뮤니케이션에 도움. 병목 위치를 파악했다면, 작은 단위로 세분화해서 병목 영역을 더 집중적으로 파헤친다(튜닝). 성능 문제 해결은 이론보다는 경험으로 습득하는 경우가 많다.
시스템에 어느 정도의 요청이 올지는 실제 요청이 오기 전까지는 알 수 없다. 이것이 IT인프라에서 성능 문제가 발생하는 이유 중 하나.
CPU병목
run queue 과다. - 코어수 늘리거나 서버 스케일 아웃하여 처리량 증가, 스케일업해서 응답시간 개선..
- 대부분의 경우, CPU사용률이 100%에 도달하는 경우는 거의 없다. 그 전에 I/O에서 막히는 경우가 많기 때문.
- 하드웨어 리소스를 잘 활용하기 위해 I/O 비동기화, 병렬처리 등을 잘 활용해야 함.
메모리 병목
가상메모리: OS커널에서 페이징이나 스와핑 등의 기술을 사용해서 부족한 메모리 공간을 디스크 영역으로 보완해서 가상적인 큰 메모리공간 사용. 페이징, 스와핑 시 오버헤드 발생.
동일 데이터 병목: 메모리에 데이터를 캐시해도 여러 프로세스나 스레드가 엑세스하는 경우 병목현상이 발생할 수 있다. 대기행렬을 사용하지 않고 뮤택스만 쓴다면 과도하게 대기하는 태스크가 발생할 수 있어서 그런듯..
디스크 I/O 병목
순차I/O, 랜덤I/O, 디스크 조각모음...
네트워크 I/O 병목
특정 라우터에 트래픽이 몰리는 경우, 대역폭..
애플리케이션 병목
db 데이터 갱신의 병목: 특정 데이터에 의존하는 처리가 병목 지점이 됨. ??
- 값의 캐시화, 병목지점의 분할(레코드를 두 개로 나눔) 등의 방식으로 해결
'웹 > 책 & 강의' 카테고리의 다른 글
클린코드 (0) | 2022.07.26 |
---|---|
그림으로 공부하는 IT 인프라 구조 [무정지] (0) | 2022.02.04 |
그림으로 공부하는 IT 인프라 구조 [응용이론, 네트워크] (0) | 2022.02.04 |
그림으로 공부하는 IT 인프라 구조 [아키텍처, 물리서버, 3계층 시스템, 기본이론] (0) | 2022.02.01 |
HTTP 완벽가이드 - 나머지 (리디렉션, 부하균형) (0) | 2022.01.20 |