$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Railsアプリのよくある パフォーマンス問題の種
Search
naohiro-t
January 23, 2020
Programming
0
190
Railsアプリのよくある パフォーマンス問題の種
naohiro-t
January 23, 2020
Tweet
Share
More Decks by naohiro-t
See All by naohiro-t
Fast JSON API - How fast is it really?
naohiro_t
1
400
Other Decks in Programming
See All in Programming
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
150
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
130
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.3k
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
730
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
9
5.8k
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
400
エディターってAIで操作できるんだぜ
kis9a
0
740
開発に寄りそう自動テストの実現
goyoki
2
1.2k
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
130
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
220
これならできる!個人開発のすゝめ
tinykitten
PRO
0
120
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.7k
How to Talk to Developers About Accessibility
jct
1
81
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
110
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
29
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
21
Unsuck your backbone
ammeep
671
58k
Producing Creativity
orderedlist
PRO
348
40k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Un-Boring Meetings
codingconduct
0
160
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
250
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]