본문 바로가기
웹/책 & 강의

그림으로 공부하는 IT 인프라 구조 [성능 향상]

by sun__ 2022. 2. 5.

[8장] 성능 향상을 위한 인프라 구조

 

성능 분석의 시작은 병목현상의 위치를 정확히 파악하는 것. 각 서버의 처리량이나 응답 상황 로그를 취득하는 방법 사용. 3계층 그림을 그려가면서 진행하면 커뮤니케이션에 도움. 병목 위치를 파악했다면, 작은 단위로 세분화해서 병목 영역을 더 집중적으로 파헤친다(튜닝). 성능 문제 해결은 이론보다는 경험으로 습득하는 경우가 많다.

 

시스템에 어느 정도의 요청이 올지는 실제 요청이 오기 전까지는 알 수 없다. 이것이 IT인프라에서 성능 문제가 발생하는 이유 중 하나.

 

CPU병목 

run queue 과다. - 코어수 늘리거나 서버 스케일 아웃하여 처리량 증가, 스케일업해서 응답시간 개선..

  • 대부분의 경우, CPU사용률이 100%에 도달하는 경우는 거의 없다. 그 전에 I/O에서 막히는 경우가 많기 때문.
  • 하드웨어 리소스를 잘 활용하기 위해 I/O 비동기화, 병렬처리 등을 잘 활용해야 함.

 

메모리 병목

가상메모리: OS커널에서 페이징이나 스와핑 등의 기술을 사용해서 부족한 메모리 공간을 디스크 영역으로 보완해서 가상적인 큰 메모리공간 사용. 페이징, 스와핑 시 오버헤드 발생.

 

동일 데이터 병목: 메모리에 데이터를 캐시해도 여러 프로세스나 스레드가 엑세스하는 경우 병목현상이 발생할 수 있다. 대기행렬을 사용하지 않고 뮤택스만 쓴다면 과도하게 대기하는 태스크가 발생할 수 있어서 그런듯..

 

디스크 I/O 병목

순차I/O, 랜덤I/O, 디스크 조각모음...

 

 

네트워크 I/O 병목

특정 라우터에 트래픽이 몰리는 경우, 대역폭..

 

애플리케이션 병목

db 데이터 갱신의 병목: 특정 데이터에 의존하는 처리가 병목 지점이 됨. ??

  • 값의 캐시화, 병목지점의 분할(레코드를 두 개로 나눔) 등의 방식으로 해결