Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ガトリングを撃ちまくりたいお年頃
Search
Tomohiko Himura
December 17, 2016
Programming
1.6k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ガトリングを撃ちまくりたいお年頃
https://gbdaitokai.connpass.com/event/37730/
Tomohiko Himura
December 17, 2016
More Decks by Tomohiko Himura
See All by Tomohiko Himura
Marpでmermaidは簡単だときいたけど
eiel
1
2.7k
バイナリ読むのにElixirしてみた
eiel
0
130
アジャイルはさておきMake People Awesomeしたい
eiel
0
230
レビューは最優先にするようにしている
eiel
0
380
再考 Fourkeys メトリクス
eiel
2
730
Test mockをSnapshot testする
eiel
0
190
devenvに入門した
eiel
1
210
関数プログラミングの考え方
eiel
1
400
逆コンウェイ作戦はフィードバックループを作るために 逆向きの流れをつくること (5分版)
eiel
0
550
Other Decks in Programming
See All in Programming
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
230
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
470
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.3k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
210
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
AHC070解法紹介
eijirou
0
150
Are APIs Still Relevant in the AI Era?
soyuka
0
390
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
460
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
390
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
4 Signs Your Business is Dying
shpigford
187
23k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
Thoughts on Productivity
jonyablonski
76
5.4k
30 Presentation Tips
portentint
PRO
1
410
Building AI with AI
inesmontani
PRO
1
1.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Designing for Timeless Needs
cassininazir
1
510
Producing Creativity
orderedlist
PRO
348
41k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Transcript
ΨτϦϯάΛ ܸͪ·͘Γ͍͓ͨࠒ 2016-12-17 ߹ಉษڧձ in େձԬࢁ -2016 Winter-
ͻΉΒ ͱͻ͜ ౡ͔Βདྷͨ ΞϓϦέʔγϣϯνϣοτπΫϨϧ github eiel twitter eielh
近所にある整体
None
ࠓͷ͓
注意事項 あんまり実用的ではない例が ちらほらありますがご了承ください。
最近ガトリングを 撃ち続けています
None
None
None
ガトリングじゃ何もでなかった
というわけで作ってみました
None
アジェンダ • 負荷テストツール Gatling • 「ただ、撃ち貫くのみ」 • いろいろ撃ち貫いてきた • まとめ
ෛՙςετπʔϧ Gatling
None
大人数で同時にブラウザを 操作しているかのようにできるツール
Gatling • Scala, Akka, Nettyで作られた • オープンソースの負荷テストツール • ハイパフォーマンス •
HTMLの静的レポートが生成できる • ブラウザ操作でテストシナリオがつくれる • Scalaのコードが生成される
どんな人におすすめか
ウェブアプリケーションが 作れるようになってきた
お客さんに価値を届けられる
そのアプリケーション アクセスがたくさんきても 本当に大丈夫ですか?
負荷がかかったときの 状態を確認するツール
RubyとかPHPとか書いてるけど
たまには Scala書きたいよね
ScalaTestとも統合されてて 機能テストツール的にも使えそう
͍ํͷࡶͳઆ໌
シナリオを用意する
Scalaで 直接書くこともできますが
レコーダを起動して
プロキシを設定して
ブラウザで操作する
package computerdatabase.advanced import io.gatling.core.Predef._ import io.gatling.http.Predef._ import scala.concurrent.duration._ import java.util.concurrent.ThreadLocalRandom
class AdvancedSimulationStep05 extends Simulation { object Search { val feeder = csv("search.csv").random val search = exec(http("Home") .get("/")) .pause(1) .feed(feeder) .exec(http("Search") .get("/computers?f=${searchCriterion}") .check(css("a:contains('${searchComputerName}')", "href").sav .pause(1) .exec(http("Select") .get("${computerURL}") Scalaのコードが生成される
Scala書けなくても使える
レポートの生成
None
ͨͩɺܸͪ؏͘ͷΈ IUUQEJDOJDPWJEFPKQB&"% &"&"&#&#&## &"&#&
ガトリング…
いっぱい並べて 撃ってみたいじゃないですか
ガトリング並べて リアルタイムモニタリング してみました
<DEMO>
None
ΨτϦϯάɾΫϥελʔ
SERFで がとりんぐ☆くらすたーを構築
ΨτϦϯάɾΫϥελʔͰ OPEFTKTΞϓϦέʔγϣϯΛܸͪൈ͘
࣌ܥྻ%#ʹใΛूΊ ϦΞϧλΠϜʹՄࢹԽ
$ serf event fire
None
正直な話 Gatling 一台で充分な負荷を かけることができます。 撃たれる側を強化すべきでした。
͍Ζ͍Ζܸͪ؏͍͖ͯͨ
たぶん wrk でやるのがいい と思いますが、 いろいろガトってみました。
ガトる内容 • 2分ぐらい • ガト 1台 • ジョジョにユーザが増えて2万まで • 1ユーザ1秒に一度アクセス
• 基本チューニングはしない
nodejs
nodejs
圧倒的安定性 エラー率 0% スループット 2981rps レスンポンスタイム 平均 2.216s nodejs
nodejs
nodejs
Golang
Golang
途中でファイルディスクプタ不足に エラー率 45% スループット 1776rps レスンポンスタイム 平均 0.011s Golang
Golang
Golang
python(wsgi)
python(wsgi)
python(wsgi) 比較的安定した感じ エラー率 45% スループット 650rps レスンポンスタイム 平均 0.8s
python(wsgi)
python(wsgi)
Ruby(puma + rack)
Ruby(puma + rack)
秒間80しか捌けてない エラー率 91% スループット 889rps レスンポンスタイム 平均 0.968s Ruby(puma +
rack)
Ruby(puma + rack)
None
php(apache)
php(apache)
apache壁が効いてる エラー率 53% スループット 1174rps レスンポンスタイム 平均 0.043s php(apache)
php(apache)
php(apache)
Haskell(wai + warp)
Haskell(wai + warp)
Goと同じ傾向 エラー率 45% スループット 1781rps レスンポンスタイム 平均 0.011s Haskell(wai +
warp)
Haskell(wai + warp)
Haskell(wai + warp)
erlang(cowboy)
erlang(cowboy)
erlang(cowboy) Goと似た傾向だけど少し違う エラー率 40% スループット 1752rps レスンポンスタイム 平均 0.114s
erlang(cowboy)
erlang(cowboy)
Scala(akka-http)
Scala(akka-http)
Scala(akka-http) nodejsを超える性能 エラー率 0% スループット 3342rps レスンポンスタイム 平均 1.871s
Scala(akka-http)
Scala(akka-http)
FSS SQT 4DBMB OPEFT IBTLFMM FSMBOH
FSS SQT (P 1)1 1ZUIPO 3VCZ
·ͱΊ
負荷テストツール Gatlingを紹介しました
複数のGatlingで 強い負荷をかけるデモをしました
いろんなものを 撃ち抜いてみました
負荷をかけると いろんな問題にぶつかります
アジャイルは価値を届けろというが
ユーザは いつも動いていて 反応が素早いシステムを求めてきやがる
価値あるサービスを リアクティブに構築するには
まだまだ勉強不足
こんな時代だからこそ
負荷テスト駆動開発 STDD
そして
アクターシステム ノンブロッキングIO
などの理解を深めないと いけないなと思いました
まとめ • Gatling • サービスにたくさん人が来るの練習をできる • 楽しい。 • nodejs チューニングしてないのにすげえ
• (ロジックあったらしらんけど) • アクターわからん。楽しい。 • Stress Test Deriven Development