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
Rustではじめる負荷試験
Search
skanehira
August 26, 2024
Programming
6
2.1k
Rustではじめる負荷試験
https://findy.connpass.com/event/327076/
skanehira
August 26, 2024
Tweet
Share
More Decks by skanehira
See All by skanehira
Rustから学ぶ 非同期処理の仕組み
skanehira
1
240
about_gorilla.vim.pdf
skanehira
0
110
if let temporary scopeについて
skanehira
0
190
build-debugger-in-rust.pdf
skanehira
1
250
Findy感謝祭2024 LT
skanehira
0
130
Wellcome Vim World
skanehira
3
650
VimConf 2023 Tiny
skanehira
1
770
Deno Fest 2023
skanehira
0
260
RustでWasm Runtimeを書いた in WebAssembly night #11
skanehira
0
880
Other Decks in Programming
See All in Programming
Introduce Hono CLI
yusukebe
6
3.1k
EMこそClaude Codeでコード調査しよう
shibayu36
0
450
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
820
品質ワークショップをやってみた
nealle
0
640
CSC509 Lecture 07
javiergs
PRO
0
250
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
1.7k
Six and a half ridiculous things to do with Quarkus
hollycummins
0
220
理論と実務のギャップを超える
eycjur
0
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
660
ドメイン駆動設計のエッセンス
masuda220
PRO
12
3k
One Enishi After Another
snoozer05
PRO
0
160
技術的負債の正体を知って向き合う
irof
0
270
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Invisible Side of Design
smashingmag
302
51k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
The Language of Interfaces
destraynor
162
25k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Site-Speed That Sticks
csswizardry
13
930
Speed Design
sergeychernyshev
32
1.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Transcript
Rustで始める負荷試験 ゴリラ
自己紹介 株式会社テックリードという会社をやってい ます。 主にフロントエンド・バックエンドエンジニ アとして仕事しています。 好きなものはVim, Go, Rust, TypeScript, Deno,
Wasm などです。 最近のマイブームはRustとWasmとDB自作です。 X : https://x.com/gorilla0513 zenn : https://zenn.dev/skanehira GitHub: https://github.com/skanehira
GopherがRust入門したので違いをまとめてみた https://zenn.dev/skanehira/articles/2024-08-12-go-rust-pros-cons
RustでWasm Runtimeを実装する本を書いた https://zenn.dev/skanehira/books/writing-wasm-runtime-in-rust
RustでDB自作やっている 最低限 create table, insert, select は動いた
自己紹介はこれくらいで…
本日の発表は
Rust製 負荷テストフレームワーク Gooseの紹介 https://github.com/tag1consulting/goose
Goose(グース)とは • LocustにインスパイアされたRust製の負荷テストフレームワーク フレームワークなので、ビルドしたシングルバイナリで動く => 可搬性、カスタマイズ性
Goose(グース)とは • LocustにインスパイアされたRust製の負荷テストフレームワーク フレームワークなので、ビルドしたシングルバイナリで動く => 可搬性、カスタマイズ性 • Locustと比べて約11倍ほどのトラフィックを生成できる 単一サーバーから数千ユーザを簡単にエミュレートできる =>
スピードとスケーラビリティ
Goose(グース)とは • LocustにインスパイアされたRust製の負荷テストフレームワーク フレームワークなので、ビルドしたシングルバイナリで動く => 可搬性、カスタマイズ性 • Locustと比べて約11倍ほどのトラフィックを生成できる 単一サーバーから数千ユーザを簡単にエミュレートできる =>
スピードとスケーラビリティ • Rust Foundationのメンバーであるtag1が開発している => 安心感
簡単な実装例を紹介
Gooseの実装例 • 負荷対象サーバー
Gooseの実装例 • 負荷実行クライアント • scenario!() シナリオの追加 シナリオは複数のtransaction で構成される • transaction!()
トランザクションの追加 複数のリクエストとレスポンスの 検証で構成される 例: ログインと画像アップロード でトランザクションを分ける
Gooseの実装例 • 負荷の実施 • ––host 対象サーバー • ––users 接続ユーザー数 •
––iterations シナリオ実行回数 ––usersの数だけ実行
Gooseの実装例 • 結果のメトリクス • PER SCENARIO METRICS シナリオごとのメトリクス • PER
TRANSACTION METRICS トランザクションごとのメトリクス • PER REQUEST METRICS HTTPリクエストごとのメトリクス リクエストごとのパーセンタイル
Gooseの実装例 • メトリクスの読み方の一例 PER TRANSACTION METRICS 項目 説明 Name シナリオ名
reqs シナリオで成功したリクエストの総数 fails シナリオで失敗したリクエストの総数 req/s リクエスト総数の対する成功した割合 fails/s リクエスト総数の対する失敗した割合 Avg(ms) リクエストの平均実行時間(ms) Min リクエスト実行時間の最小値 Max リクエスト実行時間の最大値 Median リクエスト実行時間の中央値 Status codes リクエストのレスポンスステータスコード
Gooseのここが良い 🎉 3選
HTML metrics
HTML metrics • HTMLでメトリクスやグラフが見れる
HTML metrics • HTMLでメトリクスやグラフが見れる
Logging
Logging • Gooseはリクエスト・エラーといったログを出力できる
Test plan
Test plan • 負荷の掛け方を指定できる 例:60秒間で10人のユーザーを起動しその後シャットダウンする前に5分間実行する $ cargo run --release --
-H http://local.dev/ \ --test-plan "10,1m;10,5m;0,0s"
Test plan • 負荷の掛け方を指定できる 例:5分間に500ユーザーを開始し、2,500 ユーザーまでトラフィックを急増させる cargo run --release --
-H http://local.dev/ ––test-plan \ "500,5m;500,5m;2500,45s;500,45s;500,5m;2500,45s;500,45s;500,5m;0,0s"
まとめ
•可搬性(シングルバイナリ) •カスタマイズ性(フレームワークなので自由度が高い) •ハイスピード(Locustの約11倍のトラフィック数) •ハイスケーラビリティ(単一サーバーから簡単に数千ユー ザ生成可能) •豊富なメトリクス(シナリオ・リクエストなど) •わかりやすいレポート(テキスト・HTMLレポート) •柔軟な設定(スパイクする負荷を設定できるなど)
Gooseについてもっと知りたい場 合は↓を参照してください https://book.goose.rs
最後に すこしだけ宣伝
None
VimConf は、世界初かつ世界で唯一のコミュニティに よって定期運営されているVimの国際カンファレンス 日付 : 2024年11月23日(土) 時間 : 09時30分~17時30分 懇親会:
17時30分~19時30分 場所 : アキバプラザ・アキバホール, at 東京 秋葉原 チケット販売開始予定: 2024年9月中旬 (約160名を予定)
スポンサー絶賛募集中!! https://docs.google.com/forms/d/e/1FAIpQLSe_MtcYYJ-gV- sHejH7XdXsFcD7lOuqVeQoaAhd6fpI_eUQbw/viewform
ありがとうございました