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
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Atsushi Miyamoto
November 20, 2024
Technology
1
670
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
Japan Datadog User Group Meetup#6の登壇資料です。
Atsushi Miyamoto
November 20, 2024
Tweet
Share
More Decks by Atsushi Miyamoto
See All by Atsushi Miyamoto
Agentic RAG with LangGraph
atsushii
1
580
Asynqを使って、サクッと非同期処理を実現する
atsushii
0
560
LangChainとSupabaseを活用して、RAGを実装してみた
atsushii
1
930
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
330
Other Decks in Technology
See All in Technology
OpenClaw を Amazon Lightsail で動かす理由
uechishingo
0
250
The Rise of Browser Automation: AI-Powered Web Interaction in 2026
marcthompson_seo
0
230
Copilot 宇宙へ 〜生成AIで「専門データの壁」を壊す方法〜
nakasho
0
130
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
tarappo
3
290
Agent Skill 是什麼?對軟體產業帶來的變化
appleboy
0
160
Phase05_ClaudeCode入門
overflowinc
0
630
大規模ECサイトのあるバッチのパフォーマンスを改善するために僕たちのチームがしてきたこと
panda_program
1
320
Phase04_ターミナル基礎
overflowinc
0
700
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
350
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel VM Study Tsukuba No3
ytaka23
1
710
楽しく学ぼう!ネットワーク入門
shotashiratori
1
500
Phase09_自動化_仕組み化
overflowinc
0
520
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Code Review Best Practice
trishagee
74
20k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.2k
The Curious Case for Waylosing
cassininazir
0
270
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
89
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
310
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
450
The untapped power of vector embeddings
frankvandijk
2
1.6k
Building AI with AI
inesmontani
PRO
1
810
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
180
Transcript
© 2024 Loglass Inc. 1 © 2024 Loglass Inc. OOM発生時のトラブル
シューティング Profilerを活用できる か調査してみた 宮本 淳志 2024.11.20
© 2024 Loglass Inc. 2 自己紹介 自動車整備士としてキャリアをスタートし、退職後カナダのバンクーバーへ渡航。その後、プログラミン グを現地の学校で勉強した後に、機械学習エンジニアとして現地のスタートアップでエンジニアとして のキャリアをスタートさせる。 2年半カナダに滞在したのち、福岡へ移住。
福岡の受託開発会社でバックエンドエンジニアとして3年ほど勤務。バックエンド・フロント・インフラの 経験を積む。 2024年10月に株式会社ログラスへクラウドエンジニアとして入社。 株式会社ログラス クラウドエンジニア 宮本 淳志 Atsushi Miyamoto
© 2024 Loglass Inc. 3
© 2024 Loglass Inc. 4 Loglassについて
© 2024 Loglass Inc. 5 Loglassについて
© 2024 Loglass Inc. 6 今日話すこと 1. OOM (OutOfMemoryError)の理解と事例 2.
Datadogによる監視 3. Datadog Profilerの調査と考察 4. 現在の取り組みと今後やっていきたいこと Agenda
© 2024 Loglass Inc. 7 01 OOMの理解と事例
© 2024 Loglass Inc. 8 01|OOMの理解と事例 JVMにおけるメモリ管理 Eden空間 Survivor空間 Tenured空間
ヒープ メモリ クラスのすべてのインスタンスと配列はヒープメモリに格納される Young世代 Old世代 非ヒープ メモリ メタスペースと呼ばれる、クラス定義などのメタデータや コードキャッシュ(コンパイルされたネイティブコード)などが格納される ガベージコレクション(GC) 不要となったオブジェクトを解放し、メモリを再利用可能にする • Minor GC Young世代の無効なオブジェクトを削除し、有効なオブジェクト はEdenからSurvivor空間へ • Full GC (Major GC) ヒープ全体のガベージコレクションが実施され、メタスペースやダ イレクトメモリなどの領域も解放される ※参考: https://learn.microsoft.com/ja-jp/azure/spring-apps/basic-stan dard/concepts-for-java-memory-management ダイレクト メモリ nioやgzipなどのサードパーティのライブラリで使用される
© 2024 Loglass Inc. 9 01|OOMの理解と事例 OOM エラーの種類と原因 • Java
heap space エラータイプ: java.lang.OutOfMemoryError: Java heap space 原因: ヒープ領域を使い果たした時に発生 特に大量のオブジェクトが生成された場合や適切にガベージコレクションが行われない場合 • Metaspace エラータイプ: java.lang.OutOfMemoryError: Metaspace 原因: メタスペースはクラスのメタデータなどが格納される領域 クラスの読み込みが増加したり、過剰に動的にクラスが生成された場合 • Direct buffer memory エラータイプ: java.lang.OutOfMemoryError: Direct buffer memory 原因: NIOを使用して、ダイレクトバッファを利用している場合に発生 ヒープメモリとは別の領域でメモリ管理される。これが枯渇した場合 etc...
© 2024 Loglass Inc. 10 01|OOMの理解と事例 java.lang.OutOfMemoryErrorが発生し、コンテナが停止した ログラスではインフラに AWS ECS
on Fargateを使用しており、ECS上でサービスが 稼働している 障害内容 1. アプリケーションでメモリを大量に使用する処理が実行 2. Full GCが実行 3. java.lang.OutOfMemoryErrorが発生 4. アプリケーション異常終了 5. ヘルスチェックが通過しなくなり、コンテナ停止 実際の事例 参考: https://zenn.dev/loglass/articles/547c64a172f170
© 2024 Loglass Inc. 11 02 Datadogによる監視
© 2024 Loglass Inc. 12 02|Datadogによる監視 現状のアーキテクチャ • ECS on
Fargate サイドカーとしてDatadog AgentとFluentBitが稼働 アプリケーションログやコンテナのメトリクスを監視・取得しDatadogへ集約
© 2024 Loglass Inc. 13 02|Datadogによる監視 Slackへアラート通知
© 2024 Loglass Inc. 14 02|Datadogによる監視 OOM発生時ヒープダンプみたい!!
© 2024 Loglass Inc. 15 03 Datadog Profilerの調査と考察
© 2024 Loglass Inc. 16 03|Datadog profilerの調査と考察 Heapdump vs Profiler
そもそもHeapdumpと同等の内容を profilerで確認できる?? Profiler アプリケーションのパフォーマンスを分析し、パフォーマンスの 低いコードを改善するために使うツールです。 メモリの利用状況、CPU の利用状況、その他のアプリケーショ ン レベルの問題を診断できます。 アプリケーションの実行中に パフォーマンス データを収集できます。 引用元: https://learn.microsoft.com/ja-jp/visualstudio/pr ofiling/what-is-a-profiler?view=vs-2022 Heapdump Java ヒープダンプは、特定時に作成されたJVMヒープのス ナップショットです。ヒープダンプの作成および分析は、Javaア プリケーションの問題の分析やトラブルシュートに役立つことが あります。 引用元: https://docs.redhat.com/ja/documentation/red_h at_jboss_enterprise_application_platform/7.3/html /performance_tuning_guide/heap_dumps
© 2024 Loglass Inc. 17 03|Datadog profilerの調査と考察 実際に確認してみた
© 2024 Loglass Inc. 18 03|Datadog profilerの調査と考察 あれ.. タイミングによってはOOMが発生した直前のデータは取れてないか も..?
© 2024 Loglass Inc. 19 03|Datadog profilerの調査と考察 考察 プロファイルのデータの収集間隔は60秒 Datadogにデータが渡る前にコンテナが停止して、データが送れ
ていないのかも??
© 2024 Loglass Inc. 20 04 現在の取り組みと今後やっていきたこと
© 2024 Loglass Inc. 21 04|現在の取り組みと今後やっていきたいこと S3に直接heapdumpをアップロード -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heap_dump.hprof -XX:OnOutOfMemoryError=/dump.sh
起動オプションを設定し OOM発生時にS3へアップロードする仕組み
© 2024 Loglass Inc. 22 04|現在の取り組みと今後やっていきたいこと 断念した理由 • ダンプ開始からS3にアップロード完了するまでの時間が長い(5min 〜
10min) • これによりALBのヘルスチェックに引っかかり、ダンプ完了するのを待たずにコンテナが停止して しまう
© 2024 Loglass Inc. 23 04|現在の取り組みと今後やっていきたいこと 今後 • Datadog Profiler使っていく
• 開発者側へDatadogの使い方を伝授
© 2024 Loglass Inc. 24