Skip to content

게시물리스트가져오기

yanggwangseong edited this page Dec 26, 2024 · 3 revisions

대상 API

  • [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 

k6 부하 테스트 결과

목차

결과

Thresholds

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 최대 가상 사용자 수

Comment

테스트 결과, RPS (0.987/s)에 고원지대(Plateau)에 도달한 것으로 판단되었습니다.
레이턴시가 P90 응답 시간이 2.01초, P95 응답 시간이 2.10초로 요청 응답이 느린 상태 입니다.
어떤 부분에서 문제가 발생하는지 프로파일링 도구를 통해서 분석 개선 할 예정입니다.

그라파나 시각화

결과 디테일 테이블

자세히 보기
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 - -
Clone this wiki locally