Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初めての負荷テスト with Locust (ハンズオン)

初めての負荷テスト with Locust (ハンズオン)

More Decks by NearMeの技術発表資料です

Other Decks in Programming

Transcript

  1. 0
    初めての負荷テスト with Locust
    (ハンズオン)
    2022-12-16 第25回NearMe技術勉強会
    Kenji Hosoda

    View full-size slide

  2. 1
    アジェンダ
    ● Webサーバーのセットアップ
    ● Locustのセットアップ
    ● Requests Per Second(RPS)とResponse Timeの変化の確認
    ● Locustの分散実行
    ● Webサーバーのワーカー数による変化

    View full-size slide

  3. 2
    Webサーバーのセットアップ
    ● Node.jsのインストール
    ● Expressのインストール
    ○ npm install express
    ● server.mjsのダウンロード
    ○ https://gist.github.com/kenji4569/b74cf04ce34cb8f2ab5a1923ac4fe367
    ● サーバーの起動
    ○ node server.mjs
    ● レスポンスの確認
    ○ curl http://localhost:4000 (別コンソールで)

    View full-size slide

  4. 3
    Locustのセットアップ
    ● Locustのインストール
    ○ https://locust.io/
    ○ pip3 install locust
    ● locustfile.pyの作成
    ● Locustの起動
    ○ locust --host=http://localhost:4000
    from locust import HttpUser, task
    class HelloWorldUser(HttpUser):
    @task
    def hello_world(self):
    self.client.get("/")

    View full-size slide

  5. 4
    Requests Per Second(RPS)とResponse Timeの変化の確認
    ● Locustの実行
    ○ ブラウザでhttp://0.0.0.0:8089を開き”Start swarming”をクリック
    ● ユーザー数を100にしてみる

    View full-size slide

  6. 5
    Locustの分散実行
    ● マスターの実行
    ○ locust --host=http://localhost:4000 --master
    ● ワーカーの実行
    ○ locust --worker --master-host=localhost (別コンソールで x2)

    View full-size slide

  7. 6
    Webサーバーのワーカー数による変化
    ● ワーカー数とブロック時間を指定して実行 (server.mjsの中身をチェック)
    ○ node server.mjs {workers} {block_time_ms}
    ○ ブロック時間は重たい処理を行う時間
    ■ これがないとワーカー数によるRPSの変化が見えづらかったので
    ● 1ワーカー 100msのブロック時間で実行
    ○ node server.mjs 1 100
    ○ → RPSは10に収束
    ● 2ワーカー 100msのブロック時間で実行
    ○ node server.mjs 2 100
    ○ → RPSは20に収束
    ● 1ワーカー 1000msのブロック時間で実行
    ○ → エラー発生

    View full-size slide