-
Notifications
You must be signed in to change notification settings - Fork 0
게시물리스트가져오기
yanggwangseong edited this page Dec 26, 2024
·
3 revisions
- [GET] /articles
쿼리 보기
SELECT `article`.`id` AS "articleId",
`article`.`title` AS "title",
`article`.`content` AS "content",
`article`.`starttime` AS "startTime",
`article`.`endtime` AS "endTime",
`article`.`articleimage` AS "articleImage",
`article`.`createdat` AS "createdAt",
`article`.`updatedat` AS "updatedAt",
`member`.`id` AS "memberId",
`member`.`name` AS "memberName",
`member`.`nickname` AS "memberNickname",
`member`.`profileimage` AS "memberProfileImage",
`category`.`id` AS "categoryId",
`category`.`name` AS "categoryName",
`region`.`id` AS "regionId",
`region`.`name` AS "regionName",
`district`.`id` AS "districtId",
`district`.`name` AS "districtName",
(SELECT Count(*)
FROM `article_likes` `al`
WHERE `al`.`articleid` = `article`.`id`) AS `likeCount`,
(SELECT Count(*)
FROM `participation` `p`
WHERE `p`.`articleid` = `article`.`id`
AND `p`.`status` = 'ACTIVE') AS `participantCount`,
(SELECT CASE
WHEN Count(*) > 0 THEN true
ELSE false
end
FROM `article_likes` `al`
WHERE `al`.`articleid` = `article`.`id`
AND `al`.`memberid` = '180645') AS `isLiked`
FROM `articles` `article`
INNER JOIN `member` `member`
ON `member`.`id` = `article`.`memberid`
INNER JOIN `category` `category`
ON `category`.`id` = `article`.`categoryid`
INNER JOIN `region` `region`
ON `region`.`id` = `article`.`regionid`
INNER JOIN `district` `district`
ON `district`.`id` = `article`.`districtid`
WHERE `article`.`id` < '40000'
ORDER BY `article`.`id` DESC
LIMIT 11
Metric | 조건 | 설명 |
---|---|---|
http_req_failed | rate < 0.05 | HTTP 요청 실패율이 5% 미만이어야 함 |
dropped_iterations | rate < 0.05 | 부하로 인한 요청 누락률이 5% 미만이어야 함 |
http_req_duration | p(95) < 3000 | 95%의 요청이 3초 이내에 완료되어야 함 |
항목 | 값 | 설명 |
---|---|---|
Duration | 2m | 전체 테스트 실행 시간 |
Latency (P90) | 2.01s | 90% 요청 응답 시간 |
RPS | 0.987/s | 초당 처리된 요청 수 |
PreAllocatedVUs | 10 | 미리 할당된 가상 사용자 수 |
MaxVUs | 30 | 최대 가상 사용자 수 |
테스트 결과, RPS (0.987/s)에 고원지대(Plateau)에 도달한 것으로 판단되었습니다.
레이턴시가 P90 응답 시간이 2.01초, P95 응답 시간이 2.10초로 요청 응답이 느린 상태 입니다.
어떤 부분에서 문제가 발생하는지 프로파일링 도구를 통해서 분석 개선 할 예정입니다.
- tag::testName : v1-articles-result
- Grafana DashBoard
자세히 보기
Metric | Avg | Min | Med | Max | P(90) | P(95) |
---|---|---|---|---|---|---|
Checks | 100% | - | - | - | - | - |
Data Received | 1.5 MB | - | - | - | - | - |
Data Sent | 68 kB | - | - | - | - | - |
HTTP Req Blocked | 13.74ms | 7.1ms | 12.52ms | 53.59ms | 18.93ms | 21.39ms |
HTTP Req Connecting | 13.26ms | 6.71ms | 12.14ms | 53.33ms | 17.38ms | 20.53ms |
HTTP Req Duration | 1.4s | 384.45ms | 1.57s | 2.48s | 2.01s | 2.1s |
HTTP Req Receiving | 846.28µs | 108.25µs | 501.95µs | 17.45ms | 1.63ms | 2.45ms |
HTTP Req Sending | 426.6µs | 86.58µs | 289µs | 6.6ms | 708.62µs | 970.95µs |
HTTP Req Waiting | 1.4s | 382.99ms | 1.57s | 2.47s | 2.01s | 2.1s |
HTTP Requests | - | - | - | - | - | - |
Iteration Duration | 2.42s | 1.39s | 2.59s | 3.49s | 3.03s | 3.13s |
Iterations | 181 | - | - | - | - | - |
VUs (Virtual Users) | - | 1 | - | 3 | - | - |
Max VUs | - | 30 | - | 30 | - | - |
아래는 프로젝트 데이터베이스 설계 ERD입니다: