Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
460
toridori base webをv0で爆速で作った話
toridori_dev
0
220
ハイパーパラメータチューニングって何をしているの
toridori_dev
0
420
KoT APIでプチ業務改善を試してみた
toridori_dev
0
480
MUI DataGridProコンポーネントの紹介
toridori_dev
0
700
あの日行ったマージの仕組みを僕達はまだ知らない。
toridori_dev
0
350
DBマイグレーションとORMについて
toridori_dev
0
260
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
160
Everyday Curiosity
cassininazir
0
110
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Become a Pro
speakerdeck
PRO
31
5.7k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.7k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
30
Typedesign – Prime Four
hannesfritz
42
2.9k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Docker and Python
trallard
47
3.7k
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で出力できたり、レポートもみれたり至れり尽くせり ◦ とはいえチームによってちゃんとツール選定はしよう •
負荷テストには色々な種類があるので、そのサービスの性質に応じて使い分けよう まとめ