[python] FastAPI에서 서버 부하 테스트하기

FastAPI는 Python 기반의 웹 프레임워크로, 강력하면서도 빠른 성능을 제공합니다. 이러한 빠른 성능을 확인하려면 서버 부하 테스트를 진행해야 합니다. 이 글에서는 FastAPI에서 서버 부하 테스트를 하는 방법에 대해 알아보겠습니다.

서버 부하 테스트 도구

서버 부하 테스트를 위해 다양한 도구를 사용할 수 있습니다. 그 중에서도 Apache Bench (ab) 도구를 사용해보겠습니다. Apache Bench는 Apache HTTP 서버와 함께 제공되는 툴로, 간단하게 명령어를 통해 부하 테스트를 실행할 수 있습니다.

Apache Bench는 커맨드 라인에서 다음과 같이 설치할 수 있습니다:

$ sudo apt-get install apache2-utils

FastAPI 서비스 생성

먼저, FastAPI로 간단한 웹 서비스를 생성해보겠습니다. 다음의 예시 코드를 사용해 FastAPI 서비스를 생성합니다:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

위 코드를 main.py 파일로 저장한 뒤, 다음의 커맨드를 실행하여 FastAPI 서버를 실행합니다:

$ uvicorn main:app --reload

웹 서버가 정상적으로 실행되었다면, http://127.0.0.1:8000에 접속하여 “Hello, World”를 확인할 수 있습니다.

서버 부하 테스트 실행

FastAPI 서버가 정상적으로 실행되는 것을 확인했으니 이제 서버 부하 테스트를 진행해보겠습니다. 다음의 커맨드를 실행하여 Apache Bench로 서버 부하 테스트를 할 수 있습니다:

$ ab -n 1000 -c 10 http://127.0.0.1:8000/

위 커맨드는 -n 옵션으로 요청 횟수를 1000으로, -c 옵션으로 동시 접속 수를 10으로 설정한 것입니다. 접속할 URL은 FastAPI 서버가 실행 중인 로컬 환경의 주소입니다.

부하 테스트가 끝나면 결과를 확인할 수 있습니다. 주요한 결과 중에서 Requests per secondTime per request는 성능을 측정하는데 유용한 지표입니다.

마무리

FastAPI에서 서버 부하 테스트를 진행하는 방법에 대해 알아보았습니다. 이를 통해 FastAPI의 높은 성능을 확인하고 서버의 효율성을 향상시킬 수 있습니다. 추가로 서버가 실제 사용 중인 환경에서 테스트를 진행하는 것이 더 정확한 결과를 얻을 수 있습니다.

참고 자료