일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- okhttp progress
- gradle pl
- gatling
- 스프링 scouter
- @MockBean 속도
- gradle custom plugin
- spring 테스트 속도
- junit 테스트 속도
- 스프링 gatling
- JDK21 가상스레드
- JAVA 가상스레드란
- 성능테스트 모니터링
- Springboot 테스트 속도
- file upload progress
- okhttp upload progress
- okhttp sink
- 스프링 성능테스트
- spring gatling
- custom plugin
- @DirtiesContext 속도
- gradle plugin만들기
- 자바 가상스레드
- gradle plugin이란
- 스프링 모니터링
- 자바Thread
- 테스트 속도
- spring 테스트 성능
- 자바 가상스레드란
- spring socuter
- 테스트 속도개선
- Today
- Total
호딩클라우드
성능이란? 성능은 왜 중요할까 본문
성능이란
성능은 왜 중요할까?
https://web.dev/learn/performance/why-speed-matters?hl=ko
속도가 왜 중요할까요? | web.dev
학습 성능을 시작하기 전에 먼저 사용자 환경에서의 역할과 이러한 성능이 사용자에게 더 나은 결과를 가져올 수 있는 방법을 이해해야 합니다. 이 과정은 먼저 이러한 주제에 대한 간략한 소개
web.dev
성능개선과 비지니스
- redBus가 웹사이트의 Interaction to Next Paint (INP)를 개선하고 판매를 7%늘린 방법
- Vodafone: LCP를 31% 개선하여 판매량 8%증가
- Core Web Vitals에 투자한 Rakuten 24에서 방문자당 수익은 53.37%, 전환율은 33.13%늘린 방법
- BBC는 사이트가 로드되는 데 1초가 더 걸릴 때마다 사용자의 10% 가 더 이탈한다는 사실을 발견했습니다.
성능은 사용자 유지를 좌우
성능은 수익률 좌우
성능은 사용자 경험을 좌우
웹 기반 성능 측정 지표(Web Vitals)
https://web.dev/articles/vitals?hl=ko
세가지 측면
로딩 : LCP(Largest Contentful Paint) -> 페이지가 처음으로 로딩되는 시간.
상호작용 - FID(First Input Delay) -> 최초 입력 지연
시각적 안정성 - CLS (Cumulative Layout Shift) 레이아웃이 움직이고 이런 부분의 안정성
Web Vitals 측정 도구
Chrome User Experience Report
PageSpeed Insights
Search Console(Core Web Vitals Report)
성능의 주요 지표
사용자 : 서비스를 사용하는 사용자의 수
응답시간 : 각요청에 대한 응답시간.
초당 처리량 TPS : 1초에 처리 가능한 트랜잭션의 수
리소스 사용랑 : CPU, Memory Network 등 부화 발생시 리소스 사용량
사용자 분류
- 로그인여부에 따라 사용하는 리소스가 다를 수 있다.
로그인된 사용자
로그인되지 않은 사용자
성능 테스트 관점의 사용자
Active User
서비스에 요청을 하고 기다리고 있는 사용자
- 서버에 부하를 주고 있는 자
- 메뉴나 링크를 누르고 결과가 나오기를 기다리는 사용자
- 성능 테스트시 Virtual User와 거의 동일
Concurrent User
- ActiveUser보다 큰 범위
- 서버에 부하를 주고있거나 부하를 가할 가능성이 매우 높은 서비스에 접속중인자
- 웹페이지를 띄워 놓은 사용자나 앱을 실행하고 있는 사용자
Active 와 Concurrent 사용자의 비율을 알고 있는 것은 성능테스트에서 매우 중요하다.
서비스마다 다르지만 일반 사이트의 경우 평균적은 비율은 5%, 회사 솔루션 서버같은 경우 10~20% 이다.
응답시간 분류
Application Server에서 소요되는 시간은 CPU time과 Wait time으로 나눌 수 있다.
CPU time : CPU 연산을 하면서 소요되는 시간
Wait time : DB의 결과를 기다리거나 API 호출한 후 대기하는 등 기다리는 시간을 의미
처리량 TPS
1초에 얼마나 많은 요청을 처리 가능한지 의미하는 초당 처리량
하나의 화면 또는 기능별로 계산할 수 있다.
참고 : 분당 처리량(TPM), 시간당 처리량(TPH)
TPS와 시간 관계
TPS는 스케일 아웃/ 업을 통해서 증가 시킬 수 있으나, 시간을 항샹시킬 수 있다는 의미는 아니다.
TPS와 사용자 수의 관계
User가 증가함에 따라 TPS는 증가하다가 TPS가 최대치에 도달한 이후에는 더이상 증가하지 않는다.
사용자수와 응답시간의 관계
TPS가 최대치에 도달한 이후에 급격하게 증가한다.
TPS가 최대치에 도달하는 이유는 병목지점이 존재하기 떄문이다.
병목이란?
TPS가 더이상 증가하지 않게 되고 응답속도가 증가하게되는 부분
대부분의 병목은 DB에서 발생한다.
DB connecttion 풀 의 적정 개수
기본 개수를 사용하게 되면 병목이 발생하지만 WAS,DB가 놀고있는 상황이 발생할 수 있다.
해당 서비스의 최대 TPS를 파악한 뒤 이 때의 active User수 정도의 커넥션 풀을 설정하는 것이 좋다.
성능테스트가 필요할 때
1. 서비스 오픈 전 성능 확인
- 서비스에서 몇 명의 사용자를 처리할 수 있는지 확인
- 서버의 최대 처리량 확인
2. 튜닝 전 후 성능 비교
- 응답속도가 빠른 기능의 경우 단건의 성능 비교는 무의미하고 부하시의 성능비교가 중요하기 때문
- 단. 응답속도가 느린 기능의 경우 단건의 성능 비교도 의미는 있습니다.
3. 인프라 용량 산정
4. 부하 상황에서의 결함 도출
'java' 카테고리의 다른 글
[java] JVM Garbage Collector (0) | 2024.03.04 |
---|---|
JAVA JDK21 가상스레드란? 배경부터 테스트까지 (1) | 2024.01.29 |