-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SignIn
Spike 테스트 보고서
#105
Comments
병목 지점 분석원인Email에 의한 조회의 슬로우 쿼리 발생로 추정 (MySQL Slow Query 로그에 의해 추정중) ![]()
SQL 분석# Hibernate: select u1_0.id,u1_0.created_at,u1_0.email,u1_0.name,u1_0.pw,u1_0.role,u1_0.updated_at from user u1_0 where u1_0.email=?
SELECT * FROM user WHERE email=?
analyze table user; # 통계 최신화
select table_schema, table_name, table_rows,
round(data_length/(1024*1024),2) as 'data_size(mb)',
round(index_length/(1024*1024),2) as 'index_size(mb)'
from information_schema.tables
where TABLE_SCHEMA="ticketingdb" and TABLE_NAME = "user"
group by table_name
order by data_length desc
limit 100;
EXPLAIN select * from user where email = "K6-100000@email.com"
EXPLAIN ANALYZE select * from user where email = "K6-100000@email.com";
개선방법:
|
TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | data_size(mb) | index_size(mb) |
---|---|---|---|---|
ticketingdb | user | 990675 | 145.66 | 32.58 |
32 MB 증가
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | user | null | ref | email_index | email_index | 1022 | const | 1 | 100 | null |
EXPLAIN |
---|
-> Index lookup on user using email_index (email='K6-100000@email.com') (cost=0.794 rows=1) (actual time=0.0309..0.0324 rows=1 loops=1) |
개선 이후 동일 테스트 Report
- Time Range:
&from=1696758624101&to=1696758747821
![image](https://private-user-images.githubusercontent.com/41976906/273440510-51004cfc-0ab9-4b1b-9470-5f5b32897509.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyNDg3NzIsIm5iZiI6MTcyMTI0ODQ3MiwicGF0aCI6Ii80MTk3NjkwNi8yNzM0NDA1MTAtNTEwMDRjZmMtMGFiOS00YjFiLTk0NzAtNWY1YjMyODk3NTA5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDIwMzQzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIwNWIxZWE4ZjEzZDE0YjhhZjc0Y2EwNjg5OTIyN2MyMDE1NTM3MjZhNDI5ZWRkMjZlMmY5NDk4NjU3MDMzOWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.8pQEwuBSnG67HdwrNpO8PSu7WGOK9yFJAsK77a-yto4)
10s
=>1s
![image](https://private-user-images.githubusercontent.com/41976906/273440539-12940afd-3092-4260-a144-4288f1d7d26b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyNDg3NzIsIm5iZiI6MTcyMTI0ODQ3MiwicGF0aCI6Ii80MTk3NjkwNi8yNzM0NDA1MzktMTI5NDBhZmQtMzA5Mi00MjYwLWExNDQtNDI4OGYxZDdkMjZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDIwMzQzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwOTZhZGMwOTkzYzI3MTY2ODI0NTgyZjJmMjM5MzhkYjY2MDdmZGIwOWFhMDMwNzdhNzAwNTkwYmIwNWZjZGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.6zdBU28f32ZrBpleypgXoKLiNTFcZa8-DfIPRjy48hY)
Slow Query 미발생
Latency 기준 성능 10배 개선
- 다만 아직
300ms
기준을 통과하지 못했다. - 추가 원인 분석이 필요
- 대시보드에서 특이사항을 발견할 수 없음으로, 테스트 데이터를 더 증가시켜본다.
0.0001%
=>0.001%
테스트 진행
병목 지점 분석
![]() 원인![]()
![]()
암호화에 따른 CPU 리소스 성능 문제로 추정
개선방법
참고 개선사항: Pod 개수 증가가장 단순하게 CPU 코어 수 증가 효과를 보기 위해 Pod 개수 1개 => 2개 ❯ kubectl get pod
NAME READY STATUS RESTARTS AGE
development-ingress-nginx-controller-677b46dc9d-pxw5s 1/1 Running 0 2d2h
development-ticketing-application-bf9455b5f-pw4d7 1/1 Running 0 2d20h
development-ticketing-application-bf9455b5f-wpcp6 1/1 Running 0 87s ![]()
물런 여러번의 테스트를 통해 평균값 비교를 하는 등 더 엄밀한 측정 방법이 있겠지만, 그럼에도 기존 기존처럼 20VU(
개선사항: 암호화 난이도 조절
만약 난이도를 10에서 낮춘다면 대략 어느정도의 시간을 감소시킬 수 있는지 확인하였다.
즉 난이도의 조절로 Latency 조절이 가능하며, 향후 Production 환경에서 개발할 경우 250ms를 목표로 난이도를 조절해야 한다.
|
Description
테스트 요약
Enviroment
from=1696601556172&to=1696601694289
[t3.small]
[t3.small, t3.small, t2.small, t2.small]
Thresholds
Report
K6 Report
${dashboard}/d/a3b2aaa8-bb66-4008-a1d8-16c49afedbf0/k6-prometheus-native-histograms?&orgId=1&refresh=10s&from=1696601556172&to=1696601694289&var-DS_PROMETHEUS=prometheus&var-testid=signinTest.js&var-quantile=0.95
Resource Report
${dashboard}/d/4b545447f/1-kubernetes-all-in-one-cluster-monitoring-kr??&orgId=1&refresh=10s&from=1696601556172&to=1696601694289&var-datasource=default&var-cluster=&var-namespace=default
Nginx Report
${dashboard}/d/nginx/nginx-ingress-controller?&orgId=1&refresh=10s&from=1696601556172&to=1696601694289
${dashboard}/d/4GFbkOsZk/request-handling-performance?&orgId=1&refresh=10s&from=1696601556172&to=1696601694289
Spring Report
${dashboard}/d/OS7-NUiGz/spring-boot-statistics?&orgId=1&refresh=10s&from=1696601556172&to=1696601694289
Spring Http:
${dashboard}/d/hKW8gvD4z/spring-http?&orgId=1&refresh=10s&from=1696601556172&to=1696601694289
MySQL Report
${dashboard}/d/549c2bf8936f7767ea6ac47c47b00f2a/mysql-exporter?&orgId=1&refresh=10s&from=1696601556172&to=1696601694289
The text was updated successfully, but these errors were encountered: