반응형

저번에 작성한 글과 이어진다.

 

일단 WebFlux로 만들어는 놨고, 어느 서버가 더 성능이 좋은지 테스트를 해본 후 해당 서버로 교체를 하려 한다.

솔직히 WebFlux가 더 좋을거라고는 이미 알고 있지만, 그래도 대략적인 Throughput을 구해놓기 위해 측정해봤다.

 

사용한 서버들은 아래와 같다.

https://github.com/Seungkyu-Han/KMU-TOKTOK2_FASTAPI

 

GitHub - Seungkyu-Han/KMU-TOKTOK2_FASTAPI

Contribute to Seungkyu-Han/KMU-TOKTOK2_FASTAPI development by creating an account on GitHub.

github.com

https://github.com/Seungkyu-Han/KMU-TOKTOK2_WEBFLUX

 

GitHub - Seungkyu-Han/KMU-TOKTOK2_WEBFLUX: 크무톡톡2 chatgpt webflux 서버

크무톡톡2 chatgpt webflux 서버. Contribute to Seungkyu-Han/KMU-TOKTOK2_WEBFLUX development by creating an account on GitHub.

github.com

 

이 중 FastAPI는 폴링이기 때문에 성능이 더 안 좋을 것이다.

그렇기에 FastAPI에는 기대를 하지 않고 시작했다.

 

혹시 성능 테스트에 다른 부분이 영향을 미칠수도 있으니 Docker로 CPU 1개, Ram 1GB로 설정해두고 테스트했다.

설정하는 방법은 docker-compose.yml을 사용하여 이런 옵션을 추가해주면 된다.

deploy:
  resources:
    limits:
      cpus: '1'
      memory: 1G

 

JMeter는 다음과 같이 작성했다.

헤더에 Content-Type을 명시하고

 

300명의 유저를 1분 동안 접속시켜 보았다.

 

이렇게 설정을 하고 테스트를 해보았다.

우선 WebFlux

평균 응답 시간은 11초, 최대 응답 시간은 64초

ThroughPut은 3.2/sec라고 한다.

사실 64초나 걸리면 안되지만, 그래도 300명이 1분 동안 접속할 일은 없기 때문에 이정도로 만족하려 한다.

 

이번엔 FastAPI다.

같은 조건으로 테스트 해보았지만 서버가 바로 죽어버렸다...

그렇기에 유저 수를 300명에서 100명으로 줄여보았지만, 그래도 좋은 결과는 나오지 않았다.

 

사실 이 서버는 외부 서버에 요청해서 가져오는 것이기 때문에 시간 보다는 ThroughPut을 중점으로 보려 했지만, 거기에서도 너무 많이 차이가 나버렸다...

 

이번 결과로 서버는 FastAPI에서 WebFlux로 교체하게 되었다.

+ Recent posts