ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 초식 : 초보자용 웹 서비스 성능 올리기 - 최범균
    세미나, 영상 요약정리 2022. 7. 11. 00:01
    728x90

    https://www.youtube.com/watch?v=JJJ4LReZ5q4 

     

    최범균님의 영상을 보고 정리한 내용입니다.

     

    서버 성능의 기본 지표 2개(응답 시간과 처리량)

    서버 성능의 기본 지표 2가지

    처리량은 보통 TPS라고 하며 초당 몇 개의 요청을 처리할 수 있는가를 나타냅니다.

    응답 시간은 클라이언트가 요청하여 처리결과를 받을 때까지 걸리는 시간입니다.

    응답 시간은 네트워크를 대기하는 Latency time과 실제로 서버가 처리하는 Processing Time의 합입니다.

     

     

    TPS를 높이기 위해서는 어떻게 해야 할까?

    1. 서버 늘리기

    만약 서버 1대가 10 TPS라면, 2대면 20 TPS입니다.

     

    2. 쓰레드 풀 + DB 커넥션 풀 늘리기

    동시 처리할 수 있는 개수

    쓰레드 풀 5, 처리 시간 1초 -> TPS 5

    쓰레드 풀 10, 처리 시간 1초 -> TPS 10

     

    서버 늘리기/ 커넥션 풀 늘리기의 한계점

    DB 부하 발생

    DB에 대한 부하가 임계치를 넘어가면 먹통 증상이 발생합니다.

    만약 수십만 개의 서버가 하나의 DB를 통해 조회한다면 병목현상이 발생합니다.

    DB 쿼리 시간 증가 -> 처리 시간 길어짐 -> TPS 떨어짐

     

    TPS를 높이기 위한 또 다른 방법(처리시간 줄이기)

    기본적으로 처리 시간을 줄일수록 유리합니다.

    처리시간 1초, 쓰레드풀 10 -> 10 TPS

    처리시간 0.5초, 쓰레드풀 10 -> 20 TPS

     

     

    처리시간을 어떻게 줄일 수 있을까요?

     

    처리시간에 비중이 높은 대상을 찾자!

     

    - DB 연동

    - 외부 서비스 API 호출

    - 데이터 집계/계산(DB 쿼리 시간 등)

     

    즉 위의 3가지를 줄여야 합니다.

     

    일반적인 처리시간 줄이는 방법

     

    1. 쿼리 튜닝

    쿼리 튜닝을 통해 응답 시간을 획기적으로 줄일 수 있는 경우도 있습니다.

     

    2. 캐시

    오래 걸리는 작업에 캐시를 활용

     

    3. 장비빨

    돈을 들지만 확실한 방법

    3-1. 읽기용 DB 쓰기용 DB 나누고 읽기 DB 늘리기

    3-2. 하드웨어 업그레이드

     

    4. API 호출 줄이기

    캐시를 활용하여 읽어오는 빈도를 줄이거나, 호출 자체를 하지 않는 방법이 존재합니다.

    호출 자체를 하지 않는다는 것은 카프카같은 메시징을 통해 비동기로 연동하는 방법입니다.

     

    5. 데이터 집계/계산 시간 줄이기

    캐시를 활용하여 계산 값 미리 저장해 놓기

     

    6. 대기시간 줄이기

    응답 시간 = 대기시간 + 처리시간

    위의 방법들은 처리시간을 줄이는 방법들이었습니다.

     

    대기시간도 줄일 수 있다면 좋을 것 같습니다.

     

    대역폭이 작으면 클라이언트 개수가 증가할 때 주고받는 속도가 급격히 느려집니다.

    마치 고속도로에 차가 증가하면 속도가 느려지는 것과 유사합니다.

     

    6-1.  응답 크기 자체를 줄이기(응답 압축, 이미지 파일 크기 줄이기)

    고속도로에 대형차 대신에 경차를 보내는 느낌

     

    6-2. 트래픽 분리하기(이미지, 정적 파일을 CDN을 통해 제공)

     

    6-3. 대역폭 늘리기(비용 측면에서 CND이 유리)

     

     

    CDN이란 콘텐츠 전송 네트워크의 약자로 클라이언트와 웹 사이트 서버 간에 중간 서버를 두어 효율성을 높입니다.

     

     

    마지막 정리

    댓글

Designed by Tistory.