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
Atsushi Miyamoto
November 20, 2024
Technology
730
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
Japan Datadog User Group Meetup#6の登壇資料です。
Atsushi Miyamoto
November 20, 2024
More Decks by Atsushi Miyamoto
See All by Atsushi Miyamoto
Agentic RAG with LangGraph
atsushii
1
630
Asynqを使って、サクッと非同期処理を実現する
atsushii
0
690
LangChainとSupabaseを活用して、RAGを実装してみた
atsushii
1
1k
Checkpointerを介して、DynamoDBに状態を保存してみた
atsushii
1
390
Other Decks in Technology
See All in Technology
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
280
なぜ、あなたのエージェントは言うことを聞かないのか
segavvy
1
450
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
780
プロダクト開発組織の現在地(Ver.2026/07) / product-organization
kaonavi
0
470
AI時代の開発生産性を捉え直す — 経営と現場をつなぐ「開発組織のオブザーバビリティ」— / AI Dev Ex Conference 2026
tkyowa
1
1.5k
そのドキュメント、自動化しませんか?
yuksew
1
430
全社でのソフトウェアサプライチェーン攻撃対策をやってみた with Takumi Guard
z63d
0
300
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
640
CloudWatchから始めるAWS監視
butadora
0
130
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
250
AI研修(Day2)【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
180
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
270
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Between Models and Reality
mayunak
4
380
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
The agentic SEO stack - context over prompts
schlessera
0
850
How to build a perfect <img>
jonoalderson
1
5.8k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
620
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
230
Building an army of robots
kneath
306
46k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
740
The Pragmatic Product Professional
lauravandoore
37
7.4k
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