Open skarltjr opened 2 years ago
서버의 성능 지표는 크게 TPS : 초당 몇개의 요청을 처리할 수 있는가 응답속도 : 하나의 요청이 처리되어 응답되는 과정 시간
단순한 방법은 서버를 늘리는 방법이다 - ex) 서버 1대의 TPS가 10이라면 2대를 가용할때 20
비슷한 방법으로 스레드풀 + db커넥션 풀 늘리기
서버를 늘리는 방법은 금전적인 문제가 분명히 있을 것
풀을 늘리는 방법은 -> db가 감당할 수 있는 한계치가 분명히존재 -> 이 한계치를 넘어간다면 db 쿼리 시간이 증가하고 -> 처리 시간이 길어지면서 TPS가 줄어드는 역효과가 발생
3. 그럼 TPS를 잘 높이려면
⭐️기본적으로 처리 시간을 줄여야한다
그럼 처리시간을 어떻게 줄이느냐?
서버입장에서 처리시간을 많이 잡아먹는 행위가 존재 - db연동 - api호출 - 데이터 집계/계산 등 작업을 찾아 처리 시간을 줄여야한다.
처리시간 줄이기 : db
크게 세 가지 방법 : 쿼리 튜닝 / 캐시 / 장비빨..
장비빨
쿼리 튜닝
캐시
처리시간 줄이기 : API
캐시 / 호출제거
캐시 캐시를 활용하여 외부 시스템의 api 호출 횟수 자체를 줄여버린다면 api 응답을 기다려야하는 호출시간을 단축시킬 수 있다
호출 제거
데이터 집계/계산
매 번 데이터를 집계하거나 계산하는 경우를 피해라 미리미리 계산해서 이를 캐시나 db에 보관함으로써.
실제로 매 번 좋아요 개수를 계산해오는게 굉장히 비효율적이라 생각하여 통계 테이블을 따로 빼고 이를 활용하여 미리미리 집계해본 경험
----- ### 응답시간 = 대기시간 + 처리시간
지금까지 처리시간 줄이기에 집중했지만 사실 대기시간을 줄이는 방법도 필요하다
#### 응답시간 - 대역폭
대역폭이 작으면 마치 좁은 도로에 트래픽이 몰리는것과 같다. 엉금엉금
어떻게 대처해야할까?
응답 크기 줄이기 : 응답 압축, 이미지 파일 크기 줄이기 트래픽 분리하기 : 이미지, 정적 파일을 cdn을 통해 제공
그러나 제일 중요한건 처리시간 자체를 줄일필요가 있다는것 결국 이게 안된다면 나머지는 필요가 없어진다
비슷한 방법으로 스레드풀 + db커넥션 풀 늘리기
풀을 늘리는 방법은 -> db가 감당할 수 있는 한계치가 분명히존재 -> 이 한계치를 넘어간다면 db 쿼리 시간이 증가하고 -> 처리 시간이 길어지면서 TPS가 줄어드는 역효과가 발생
⭐️기본적으로 처리 시간을 줄여야한다
그럼 처리시간을 어떻게 줄이느냐?
처리시간 줄이기 : db
장비빨
쿼리 튜닝
캐시
처리시간 줄이기 : API
캐시 캐시를 활용하여 외부 시스템의 api 호출 횟수 자체를 줄여버린다면 api 응답을 기다려야하는 호출시간을 단축시킬 수 있다
호출 제거
데이터 집계/계산
실제로 매 번 좋아요 개수를 계산해오는게 굉장히 비효율적이라 생각하여 통계 테이블을 따로 빼고 이를 활용하여 미리미리 집계해본 경험
지금까지 처리시간 줄이기에 집중했지만 사실 대기시간을 줄이는 방법도 필요하다
대역폭이 작으면 마치 좁은 도로에 트래픽이 몰리는것과 같다. 엉금엉금
어떻게 대처해야할까?
응답 크기 줄이기 : 응답 압축, 이미지 파일 크기 줄이기 트래픽 분리하기 : 이미지, 정적 파일을 cdn을 통해 제공