서버 성능의 지표
- 응답 시간
- TPS (처리량)
- 응답 시간 = 서버에서 처리 시간 + 클라이언트-서버 간의 데이터 전달 시간
- TPS (= Transaction per Second: 초당 처리할 수 있는 요청 개수)
a. 스케일 아웃 이중화
b. 스케일 업 CPU, 메모리 사양을 더 높임.
c. 처리 시간을 줄이면 TPS가 늘어날 수 있음. 처리 시간 1초, 스레드 풀 10개 기준으로 TPS가 10이 나온다고 할 때 처리시간이 0.5초가 되면 TPS가 20이 된다.
d. 따라서 처리 시간을 단축시키면 TPS를 향상시킬 뿐 아니라 응답시간까지 향상시킬 수 있다.
처리 시간 줄이는 방법
처리 시간에서 비중이 높은 대상을 찾아서 줄여야 한다. 비중이 높은 대상으로는 일반적으로 세 가지가 있다.
- DB 연동
a. 쿼리 튜닝
b. 캐싱(redis 등) 이용함으로써 DB 데이터 호출 수 절약
c. read/write db 분리 및 read db 수 증가 - API 호출
a. 캐싱 이용함으로써 API 호출 횟수 절약
b. 메시지큐 이용함으로써 외부 시스템 직접 호출이 아닌 간접 호출 및 비동기 처리 - 데이터 집계/통계 연산
a. 캐싱 - 통계류(좋아요 수, 조회 수, 팔로우 수)
응답 시간 줄이는 방법
- 응답 데이터 크기 줄이기
a. 응답 자체를 압축, 이미지 품질 낮춤 등 - 트래픽 분리
a. 정적 파일 같은 경우에는 CDN 이용. CDN은 정적 파일을 제공하는 데 특화된 서비스이므로 대역폭 자체가 넓다. - 대역폭(최대로 전송할 수 있는 데이터의 양) 늘리기
: 결국 인스턴스 사양 올리기
요약하자면
처리 시간을 줄이기 위해서는,
캐싱을 적극적으로 활용함으로써 외부 시스템을 호출하는 횟수를 줄이거나, DB에서 데이터를 조회해오는 횟수를 줄이거나, 통계 정보를 계산하는 횟수를 줄임으로써 처리 시간을 줄일 수 있다.
또한 메시지 큐 및 비동기 시스템을 활용함으로써 시스템 직접 호출 대신 간접 호출 방식을 선택함하거나 스케일 업/아웃 처리 시간을 줄일 수 있다.
응답 시간을 줄이기 위해서는,
대역폭을 늘리거나(스케일 업) 전송하는 데이터의 크기(데이터 압축)를 줄이거나, 트래픽을 분산(CDN, 로드밸런서 등)시켜야 한다.
참고
'CS' 카테고리의 다른 글
스레드 수와 서버 성능의 관계 (2) | 2024.02.14 |
---|