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
230
Locustでmacから開発環境に負荷試験をしてみた
toridori
January 10, 2025
Tweet
Share
More Decks by toridori
See All by toridori
N + 1 問題の概要と Railsにおける解決方法
toridori_dev
0
180
Aurora Cloneで QA環境をつくってみた
toridori_dev
0
270
ニューモーフィズムってどうなの
toridori_dev
0
470
toridori base webをv0で爆速で作った話
toridori_dev
0
220
ハイパーパラメータチューニングって何をしているの
toridori_dev
0
430
KoT APIでプチ業務改善を試してみた
toridori_dev
0
500
MUI DataGridProコンポーネントの紹介
toridori_dev
0
710
あの日行ったマージの仕組みを僕達はまだ知らない。
toridori_dev
0
350
DBマイグレーションとORMについて
toridori_dev
0
260
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Building AI with AI
inesmontani
PRO
1
610
The Language of Interfaces
destraynor
162
26k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
97
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
180
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
530
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
What's in a price? How to price your products and services
michaelherold
246
13k
Done Done
chrislema
186
16k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
45
The Limits of Empathy - UXLibs8
cassininazir
1
200
Designing for Performance
lara
610
70k
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で出力できたり、レポートもみれたり至れり尽くせり ◦ とはいえチームによってちゃんとツール選定はしよう •
負荷テストには色々な種類があるので、そのサービスの性質に応じて使い分けよう まとめ