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
Railsアプリのよくある パフォーマンス問題の種
Search
naohiro-t
January 23, 2020
Programming
200
0
Share
Railsアプリのよくある パフォーマンス問題の種
naohiro-t
January 23, 2020
More Decks by naohiro-t
See All by naohiro-t
Fast JSON API - How fast is it really?
naohiro_t
1
410
Other Decks in Programming
See All in Programming
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
2
380
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
1k
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
200
의존성 주입과 모듈화
fornewid
0
130
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
120
Coding as Prompting Since 2025
ragingwind
0
790
おれのAgentic Coding 2026/03
tsukasagr
1
140
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
240
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
300
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
0
470
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.4k
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
130
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Navigating Weather and Climate Data
rabernat
0
160
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
How GitHub (no longer) Works
holman
316
150k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Producing Creativity
orderedlist
PRO
348
40k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
360
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
160
Building the Perfect Custom Keyboard
takai
2
730
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Transcript
Application Monitoring for Ruby, Elixir, Python, PHP Railsアプリのよくある パフォーマンス問題の種 Naohiro
Takahashi
[email protected]
自己紹介 Naohiro Takahashi
[email protected]
Software Developer/Sales Engineer at Scout @naohiro_tt
• N+1 • count vs size • Memory Bloat 種
N+1の影響力知っていますか? N+1
N+1
joins? includes? preload? eager_load? 1. 絞り込みしたいだけなら、joins 2. 関連テーブルのデータにアクセスするなら includesから始めてみる 3.
SQLが2個発行されている場合には、eager_load とperformanceを比べる
改善してみた
改善してみた
改善してみた
count vs size 1. countは毎回クエリを発行する 2. sizeは一度読み込んでいたものに対しては、 collection のlengthを取得するのみ
count vs size
count vs size
count vs size
count vs size
count vs size
・・・
Memory bloat
Heroku R14
Railsのmemory bloatについて知っておくべきこと • メモリ使用量が自然に減少することはない • ヘビーユーザーが原因になっていることが多い • アロケーションの最大値に注目 • アロケーションとメモリ使用量は、必ずしも相関しない
• アプリスタート直後は、メモリ使用量が増加しやすい
Memory: Memory Bloat Insights
Memory: Memory Bloat Insights
Memory: Memory Bloat Insights
レスポンススピードを改善することにより、 CVR向上、UXの向上が見込めます。 ▪ ユーザーの47%はウェブサイトが2秒以内にロードすることを基 本と考えている ▪ 読み込み時間が3秒以上の場合、40%のユーザーは離脱する ▪ ページ読み込みが1秒遅い場合、7%CVRが減少する ▪
ユーザーの52%はページの読み込みが早いと、よりエンゲージ メントが高まる傾向にある ▪ ユーザーの72%はUXが良くないと感じたECは次回以降積極的 に使わない傾向にある *米国でのレスポンスタイムによるECサイトでの影響の事例 APMの必要性
Doggoに聞く、Scoutの優位性 - その1 UI・UXが、初めてでも直感的に使いやすくなっております
1. レスポンスタイムがすぐに分かる 3. ボトルネックの原因をその場で把握 2. ドラッグドロップで範囲選択 APMは一般的にレスポンスタイムやリクエスト数を表示します。 Scoutのダッシュボードではページを遷移すること なく、任意の期間をソートし特定のレスポンス遅延等を引き起こした原因の大枠を把握することができます。 直感的なUI・UX
Doggoに聞く、Scoutの優位性 - その2 Insightsにより、パフォーマンスボトルネックの明確になっ ております。
N+1 クエリが発生しているリクエストを自動的に検出、表示します。 Insights: N+1
アプリケーションの中で、特に遅い DBクエリを自動検出、表示します。 Insights: Slow Query
メモリーブロート問題を自動検出、表示します。 Insights: Memory Bloat
Doggoに聞く、Scoutの優位性 - その3 AutoInstrumentsによって、Controller一行ごとを自動的 に計測しております(現在、Railsのみ対応)
他社APMでは、モニタリング用のコードを追加しないと計測できない詳細な情報 (現在のところ、 Controller一行ごとの時間)、Scoutが自動的に計測します Auto Instruments 1. Sleep::runが5秒使用
Doggoに聞く、Scoutの優位性 - その4 Github Integrationによりソースコードとの紐付けが可能 となっております
1. ボトルネックの原因のコードを表示 2. コードの作者を表示、対応の依頼が可能 3. チームで共有可能 Scoutは、頻繁に使用されるアクション (DBクエリ、HTTPリクエスト、テンプレートレンダリング等 )を始め、他にも多 くのアクションのトラッキングに長けています。
Scoutのトレースは、ボトルネックとなるソースコードと紐付いている ので、実際の原因特定までの時間を大幅に削減することができます。 ソースコードとの紐付けが可能
Doggoに聞く、Scoutの優位性 - その5 開発環境では、無料でScoutのDevTraceを使用可能に なっております。
開発環境でも、手軽に無料でパフォーマンス改善可能 DevTrace
KeyをScoutから取得し、 環境変数、又は ファイルから設定 言語別のエージェントを インストール gem “scout_apm” アプリを起動! (モニタリング開始) 1
2 3 導入方法
ユーザーの声
Doggoに聞く、Scoutの優位性 - ラスト 柔軟な価格設定になっております
None
14日間無料トライアル実施中! Naohiro Takahashi Developer/Sales Engineer in JP
[email protected]