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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
skanehira
August 26, 2024
Programming
2.5k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustではじめる負荷試験
https://findy.connpass.com/event/327076/
skanehira
August 26, 2024
More Decks by skanehira
See All by skanehira
Reactにおける 良いコンポーネントテストとはなにか
skanehira
1
440
vimconf2025.pdf
skanehira
0
44
findy-ai-terminal.pdf
skanehira
2
510
Rustから学ぶ 非同期処理の仕組み
skanehira
1
420
about_gorilla.vim.pdf
skanehira
0
140
if let temporary scopeについて
skanehira
0
210
build-debugger-in-rust.pdf
skanehira
1
280
Findy感謝祭2024 LT
skanehira
0
160
Wellcome Vim World
skanehira
3
680
Other Decks in Programming
See All in Programming
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
200
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.5k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
260
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.8k
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
初めてのKubernetes 本番運用でハマった話
oku053
0
130
霧の中の代数的エフェクト
funnyycat
1
400
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
140
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
130
AIエージェントで 変わるAndroid開発環境
takahirom
2
680
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
350
How to Talk to Developers About Accessibility
jct
2
400
How to Ace a Technical Interview
jacobian
281
24k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The Curious Case for Waylosing
cassininazir
1
430
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
240
How to build a perfect <img>
jonoalderson
1
5.8k
A designer walks into a library…
pauljervisheath
211
24k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
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
ありがとうございました