Skip to content

선착순 ‐ 스레드 풀 변경에 따른 성능 차이

mjmj edited this page Aug 27, 2024 · 3 revisions
  • 현재 조건
    • lua script와 배치 사용

스레드 풀 5개

image image image

  • vuser 1000 - cpu 사용량 32%
  • rps 272 ~ 실패율 0.2%
Type Name # Requests # Fails Median (ms) 95%ile (ms) 99%ile (ms) Average (ms) Min (ms) Max (ms) Average size (bytes) Current RPS Current Failures/s
POST /api/v1/firstcome/quiz 101299 149 880 1400 1600 828.56 6 1824 116.33 273.5 0.2
  Aggregated 101299 149 880 1400 1600 828.56 6 1824 116.33 273.5 0.2

스레드 풀 10개

image image image

cpu 사용량 24%, db cpu 9%

Type Name # Requests # Fails Median (ms) 95%ile (ms) 99%ile (ms) Average (ms) Min (ms) Max (ms) Average size (bytes) Current RPS Current Failures/s
POST /api/v1/firstcome/quiz 21172 23 98 690 800 207.9 9 962 116.5 287 0.3
  Aggregated 21172 23 98 690 800 207.9 9 962 116.5 287 0.3

스레드 풀 200개 일 때

image image image

선착순 마감 전

  • 200TPS, 응답 시간은 vuser 600명 시점부터 요청이 대기하는 시간이 길어짐
  • cpu 사용량 64%, db 서버 14%

스레드 풀 300개 일 때

image image image

선착순 마감 전

  • 200TPS, 응답시간은 아래와 같이 vuser 1000명이 되면서 대기하는 시간이 길어진 것을 확인할 수 있다.
  • cpu 사용량 74%, db cpu 19.4%
Type Name # Requests # Fails Median (ms) 95%ile (ms) 99%ile (ms) Average (ms) Min (ms) Max (ms) Average size (bytes) Current RPS Current Failures/s
POST /api/v1/firstcome/quiz 61996 82 1400 2600 3800 1412.34 13 7653 116.47 254.6 1
Aggregated 61996 82 1400 2600 3800 1412.34 13 7653 116.47 254.6 1

스레드 풀 500개 일 때

image image image

  • cpu 사용량 76%, vuser 1000명 가까워 질 때 병목이 발생하는 것을 알 수 있다.
Type Name # Requests # Fails Median (ms) 95%ile (ms) 99%ile (ms) Average (ms) Min (ms) Max (ms) Average size (bytes) Current RPS Current Failures/s
POST /api/v1/firstcome/quiz 33159 50 1200 2300 3400 1103.63 10 7517 116.62 245.2 0.7
  Aggregated 33159 50 1200 2300 3400 1103.63 10 7517 116.62 245.1 0.7

스레드 풀 1000개 일 때

image image image

Type Name # Requests # Fails Median (ms) 95%ile (ms) 99%ile (ms) Average (ms) Min (ms) Max (ms) Average size (bytes) Current RPS Current Failures/s
POST /api/v1/firstcome/quiz 35763 56 190 890 1300 278.08 7 3356 116.59 283.3 0.3
  Aggregated 35763 56 190 890 1300 278.08 7 3356 116.59 283.3 0.3
  • 히카리풀 50개 image image image
image

결론

  • 스레드 풀을 늘리는 것은 tps에는 영향을 주지 않지만 많은 요청을 동시에 처리해 응답 시간 자체는 줄일 수 있다.

  • 처리 속도는 비슷하지만 동시에 많은 스레드를 통해 요청을 처리하는 것을 볼 수 있다.

  • 하지만 스레드 수가 증가할 수록 cpu 사용량이 증가하고 적당히 조정하지 않으면 서버가 다운될 수 있다.

  • 쓰레드 수가 적을 수록 동시 처리 능력이 떨어지는 것을 확인할 수 있다.

  • 쓰레드 1000개를 사용하니 응답시간도 안정적이고 tps도 살짝 올라간 것을 볼 수 있다.

참고 자료

적정 스레드 풀 개수

  • cpu 대기시간이 서비스 시간보다 짧다면 cpu 개수보다 스레드가 적어야 성능이 좋다.

스레드 실행 과정 image