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
0
120
OOM発生時のトラブルシューティング Profilerを活用できるか調査してみた
Japan Datadog User Group Meetup#6の登壇資料です。
Atsushi Miyamoto
November 20, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
FlutterアプリにおけるSLI/SLOを用いたユーザー体験の可視化と計測基盤構築
ostk0069
0
180
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
560
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
4
250
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
7
720
組織成長を加速させるオンボーディングの取り組み
sudoakiy
3
300
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
260
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
210
AGIについてChatGPTに聞いてみた
blueb
0
130
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
250
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
230
日経電子版のStoreKit2フルリニューアル
shimastripe
1
160
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
Thoughts on Productivity
jonyablonski
67
4.3k
Done Done
chrislema
181
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
910
The Art of Programming - Codeland 2020
erikaheidi
52
13k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
KATA
mclloyd
29
14k
The Cult of Friendly URLs
andyhume
78
6k
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