はじめに
前回までで並列実行を行う方法で負荷テストを行ったが、
それでも約2700RPSにしか到達できなかった。
今回はAPIサーバーと負荷テストリクエストを行うデバイスを分けることで、
RPSを向上させることが可能か検証する。
関連記事
【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(必須ではない)
環境構築
(2)の記事をご参考ください。
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(2)
また今回使用するPCそれぞれにapi serverとlocustが実行できる環境を整えておく。
実行
そもそもシステムの処理性能でRPSが変化する可能性は十分に考えられるため、
手始めにMacBook Pro(2020) のみでの性能を確認しておく。
master-slave構成で slave=4で実行は行う。
- 最大接続人数 = 10000
- 1秒あたりに増加するユーザー数 = 1000
という前提も変更なし
実行結果
MacBook Pro(2020) ❌ MacBook Pro(2020)
約1900RPS。あまり変化はないか…
MacBook Pro(2020) ❌ Mac Studio(2022)
APIサーバーをMac Studioで起動し Proで負荷試験を行う.
約1400RPS なぜか大幅にRPSが下がった。赤色が失敗の数を表しているがこちらも確実に増えている。
Mac Studio(2022) ❌ MacBook Pro(2020)
今度は反対にAPIサーバーをProで起動し Mac Studioで負荷試験を行う
約1800RPSくらい。プライベートネットワークといえどデバイス間での通信となると失敗率が増加している。
ただ、上二つの結果から、負荷試験実行側のシステム性能にRPSは若干依存しているように見られる。
Mac Studio(2022) ❌ MacBook Pro(2017)
上記結果の予想よりAPIサーバーをPro(2017)で起動し Mac Studioで負荷試験を行う。
明らかに性能が下がっている為反対の構成でも確認。
MacBook Pro(2017) ❌ Mac Studio(2022)
反対の構成でも確認。
こちらもRPSは下がっているが、失敗率に影響は与えていない。サーバー側がしっかりリクエストを捌けていることがわかる。
次に
結局今回の実行結果から言えることは、RPSを上昇させるにはAPI server ・ 負荷試験実行PCそれぞれハイスペックPCで実行する必要があるでしょうということであると思うが。。。
結論そうだと思う。大人しくクラウドサービスを利用したら一万RPS到達することは容易であろう。
(他の人の記事で見かけた。)
最後の足掻きとして次回、PC3台をmaster-slave構成として構築して負荷試験を行う。
【locust】負荷試験ツールLocustを使ってローカルPCで一万RPSを目指す(6)
コメント