Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Locustでmacから開発環境に負荷試験をしてみた
Search
toridori
January 10, 2025
0
240
Locustでmacから開発環境に負荷試験をしてみた
toridori
January 10, 2025
Tweet
Share
More Decks by toridori
See All by toridori
N + 1 問題の概要と Railsにおける解決方法
toridori_dev
0
190
Aurora Cloneで QA環境をつくってみた
toridori_dev
0
280
ニューモーフィズムってどうなの
toridori_dev
0
490
toridori base webをv0で爆速で作った話
toridori_dev
0
230
ハイパーパラメータチューニングって何をしているの
toridori_dev
0
450
KoT APIでプチ業務改善を試してみた
toridori_dev
0
520
MUI DataGridProコンポーネントの紹介
toridori_dev
0
730
あの日行ったマージの仕組みを僕達はまだ知らない。
toridori_dev
0
360
DBマイグレーションとORMについて
toridori_dev
0
260
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Everyday Curiosity
cassininazir
0
130
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
350
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Mind Mapping
helmedeiros
PRO
0
90
Testing 201, or: Great Expectations
jmmastey
46
8.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Transcript
Locustでmacから開発環境に負荷 試験をしてみた
Locustとは オープンソースの負荷試験ツール pythonでシナリオ記述ができる 単一ワーカーからの負荷のみでなく、複数ワーカーからの分散負荷をサポートしている https://locust.io/ Locust
なぜLocust? JMeterやk6など他にも有名なツールはあるが、なぜLocustを選んだのか? • web UIが充実していて、負荷試験中のモニタリングがしやすいから • pythonで書けるから ◦ 案件でSageMaker Endpointに対して負荷試験をしたかったのだが、LocustならAWS
SDK(boto3)が使えるから ▪ 実は最初はk6(JSでシナリオ書けるツール)でやろうと思っていたが、SageMaker clientに 対応してなくて独自実装するのがだるくてやめた Locust
そもそも負荷試験とは アプリケーションに負荷をかけた際の挙動や性能を検証するテストのこと。 • 「普段の開発だと同時リクエストなんてしないから、本番で同時にたくさんのリクエストが来たら ここの挙動どうなるんだろう…」 • 「⚪時台の想定リクエストxxxx件くらいだけど、サーバ落ちたりしないかな…」 みたいな問題を事前にある程度解決できる。 負荷試験
負荷試験の種類について k6の公式ドキュメント が言うには、負荷試験には大きく5つの種類がある。 1. スモークテスト 2. 平均負荷テスト 3. ストレステスト 4.
ソークテスト 5. スパイクテスト 基本的にはスモークテストで正常に動くことを確認し、2~5のテストに臨む。 負荷試験
スモークテスト システムが最小限の負荷で適切に動作することを検証。 負荷試験というか品質保証みたいなもの。バグがあるのに負荷試験しても意味ないので。 負荷試験の種類
平均負荷テスト 予想される通常の条件下でシステムがどのように動作するかを検証。 本来は最低限これがOKだったら初回リリースとしたいところ。 負荷試験の種類
ストレステスト 負荷が予想される平均を超えた場合に、システムがどのように動作するかを検証。 • どの程度の負荷になら耐えられるのか、限界の特定 • ボトルネックの発見 ◦ 純粋にサーバスペックが低いのか、RDSのコネクションが少なすぎるのか 等 •
自動スケーリング時の挙動確認 できれば初回リリース前にやりたい。 負荷試験の種類
ソークテスト 長期間負荷がかかった場合のシステムの信頼性とパフォーマンスを評価。 • パフォーマンスの劣化確認 • メモリリーク等の長時間運用で顕在化する問題の特定 もちろんできるならやるに越したことはないが、初回リリースではやらなくても良い気はする。 こういうのが顕在化するのは多少運用してからなので。 顕在化してからでは遅くね?というのはもちろんそうなのだが、そこまで余裕のある企業がどれほどあ るだろうか。
負荷試験の種類
スパイクテスト 負荷が急増した場合のシステムの動作と存続を検証。 • 突然のトラフィック増加に対する応答確認 • その後の負荷の減少に対する回復確認 • ボトルネックの発見 これを実施するかどうかはサービスの特性による。 管理画面とかなら正直不要だろうし、ゲームとかチケット販売サービスとかは必須だろう。
負荷試験の種類
Locustで負荷試験をやってみよう 本当はDBアクセスしたいんだけど、今回はしてない。許して。 実際はIOPS(一秒間にどれだけ読み書きできるか)とかレイテンシとかも見て。 AWS RDSならモニタリングタブで確認できる。 負荷試験の実施
まとめ • Locustなら誰でもできるレベルで簡単に負荷試験できる ◦ UIみやすくてめっちゃ良い感じ ▪ CSVで出力できたり、レポートもみれたり至れり尽くせり ◦ とはいえチームによってちゃんとツール選定はしよう •
負荷テストには色々な種類があるので、そのサービスの性質に応じて使い分けよう まとめ