はじめに
前回の記事で負荷試験についてざっくり紹介した。
今回は実際にlocal環境に簡単なweb api server を立ち上げlocustを用いて負荷試験を行ってみる。
なお、今回はapi server は構築が簡単なFastAPIを使っている。
関連記事
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(1)
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(2)
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(3)
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(4)
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(5)
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(6)
実行環境
実行環境は主に以下のようになります。
- Mac Studio(2022) Apple M1 MAX メモリ32GB GPU24コア
- MacBook Pro(2020) M1 メモリ16GB GPU 8コア
- MacBook Pro(2017) intel core i5 メモリ8GB GPU2GB?
- Python 3.9.13 (web api server 構築のため それぞれのデバイスに環境構築した)
- pyenv(必須ではない)
環境構築
よりリポジトリをcloneしてくる。
1 |
cd ./locust-experiment/ |
python実行環境があるなら以下pyenvのインストールは無視して構いません。
pyenvのインストール
1 2 |
git clone git://github.com/yyuu/pyenv.git ~/.pyenv brew install pyenv |
pathの編集
pyenv のpathを通すために zsh_profile(人によって異なる)を編集
1 2 3 4 |
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zsh_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zsh_profile echo 'eval "$(pyenv init --path)"' >> ~/.zsh_profile echo 'eval "$(pyenv init -)"' >> ~/.zsh_profile |
下記実行で変更を適用させる。
1 |
soruce ~/.zsh_profile |
pyenvでpythonをインストールとバージョンの切り替え
1 2 3 4 5 |
pyenv install --list pyenv install 3.9.3 pyenv local 3.9.3 python --version >Python 3.9.3 |
一行目の実行で表示されるpythonのバージョンのリストの最新をインストールする。
四行目を実行してインストールしたバージョンが表示されればOK
virtualenvで必要なライブラリのインストールを行う
1 2 3 4 |
python3 -m pip install virtualenv python3 -m virtualenv venv source venv/bin/activate pip install -r requirements.txt |
実行
FastAPI server 起動
1 |
uvicorn main:app --reload |
こちらにアクセスできたら OK
今回用意しているAPIは
- GET /test
- PUT /items/{item_id}
の二つのみでそれぞれJSONで固定の値を返す簡単な実装としている。
Locust実行
最初にtest.pyの四行目のhostという変数を以下のように変更する。
1 2 3 4 5 6 7 8 |
from locust import HttpUser, task class HelloWorldUser(HttpUser): host = "http://192.168.0.12:8001" <= http://127.0.0.1:8000に変更 @task def hello_world(self): self.client.get("/test") |
locust実行 以下コマンド
1 |
locust -f test.py |
入力フォームは上から順に
- 最大接続人数
- 1秒あたりに増加するユーザー数
- ホスト
を入力できるようになっている。
start swarming で実行まずは
- 最大接続人数 = 1
- 1秒あたりに増加するユーザー数 = 1
でテスト実行を行う。
実行結果は以下のようになった。
約一分間実行した結果以下のようになった。
ユーザ数1人で1000RPSを達成する事は確認できた。
次に
今回で実行環境の準備と実際に実行した結果を簡易的に表示することができた。
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(3)
次回からユーザー数や1秒あたりに増加するユーザー数を変更することでRPS向上を目指す。
コメント