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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
480
Import assertionsが消えた日~ECMAScriptの仕様はどう決まり、なぜ覆るのか~
bicstone
2
180
WebAssembly を読み込むベストプラクティス 2026年春版 / Best Practices for Loading WebAssembly (Spring 2026)
petamoriken
5
1.1k
【26新卒研修資料】TDD実装演習
dip_tech
PRO
0
170
AI時代になぜ書くのか
mutsumix
0
250
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
660
サプライチェーン攻撃対策「層を重ねて落ちない壁」を10日間で組み上げた話 #TechLeadConf2026
kashewnuts
1
230
Road to RubyKaigi: Play Hard(ware)
makicamel
1
550
Making the RBS Parser Faster
soutaro
0
670
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
1k
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1.1k
Agentic Elixir
whatyouhide
0
440
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Producing Creativity
orderedlist
PRO
348
40k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
180
How to Ace a Technical Interview
jacobian
281
24k
New Earth Scene 8
popppiees
3
2.2k
Building an army of robots
kneath
306
46k
Paper Plane (Part 1)
katiecoart
PRO
0
7.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
230
Designing Experiences People Love
moore
143
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
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]