← Back
Memory

OpenResty の隠れたメモリリークを無停止で特定する手法(Zero Downtime)

  • 本番環境におけるメモリリークの徹底解剖
  • なぜ、このような問題は解決が極めて困難なのか?
  • 「運任せ」から「予測可能」なシステムへ
  • パフォーマンス問題が「ツール」の域を超える時
  • 本番環境におけるメモリリークの徹底解剖
  • なぜ、このような問題は解決が極めて困難なのか?
  • 「運任せ」から「予測可能」なシステムへ
  • パフォーマンス問題が「ツール」の域を超える時

OpenResty における LuaJIT RSS メモリリークの修正:再起動なしで OOM Kill を防ぐ

  • LuaJIT「擬似メモリリーク」とは何か
  • 本番データによる問題診断
  • なぜ従来の対処法では解決しないのか
  • LuaJIT-plus によるアロケータレベルの解決
  • 本番投入後の効果
  • LuaJIT「擬似メモリリーク」とは何か
  • 本番データによる問題診断
  • なぜ従来の対処法では解決しないのか
  • LuaJIT-plus によるアロケータレベルの解決
  • 本番投入後の効果

本番環境で Java メモリリークを特定する方法——ヒープダンプも再起動も不要

  • 複数回の Full GC 後もヒープが回収されない理由:本番環境の Java メモリリーク
  • ヒープダンプなしで本番環境の Java メモリリークを診断する方法
  • Java メモリリークを特定する再利用可能な 3 ステップ法
  • OpenResty XRay を選ぶ理由
  • よくある質問
  • 複数回の Full GC 後もヒープが回収されない理由:本番環境の Java メモリリーク
  • ヒープダンプなしで本番環境の Java メモリリークを診断する方法
  • Java メモリリークを特定する再利用可能な 3 ステップ法
  • OpenResty XRay を選ぶ理由
  • よくある質問

オンライン Node.js アプリケーションの CPU 使用状況分析(OpenResty XRay を使用)

  • Node.js アプリケーションにおける高 CPU 使用率の問題
  • Node.js アプリケーションにおける CPU ブロッキングの問題
  • サポートされている Node.js バージョンとオペレーティングシステム
  • 自動サンプリングと専門家による分析
  • パフォーマンスへの影響と追加負荷
  • 今後の計画
Photo by Yichun Zhang
  • Node.js アプリケーションにおける高 CPU 使用率の問題
  • Node.js アプリケーションにおける CPU ブロッキングの問題
  • サポートされている Node.js バージョンとオペレーティングシステム
  • 自動サンプリングと専門家による分析
  • パフォーマンスへの影響と追加負荷
  • 今後の計画

クラッシュから根本原因まで:OpenResty XRay が Nginx メモリ破壊問題を明確に分析する方法

  • 事例の背景:ログでは説明できない Nginx ワーカープロセスの頻繁なクラッシュ
  • 記録ファイルの分析:クラッシュを「第一現場」まで巻き戻して再生する
  • 根本原因:Nginx 接続ライフサイクルにおける Use-After-Free
  • よくある質問(FAQ)
Photo by 章亦春
  • 事例の背景:ログでは説明できない Nginx ワーカープロセスの頻繁なクラッシュ
  • 記録ファイルの分析:クラッシュを「第一現場」まで巻き戻して再生する
  • 根本原因:Nginx 接続ライフサイクルにおける Use-After-Free
  • よくある質問(FAQ)

OpenResty の LRU キャッシュに起因するメモリリークを追跡する —— 根本原因はキャッシュされた SSL 証明書

  • なぜ低トラフィックの OpenResty アプリがメモリをリークし続けたのか
  • LRU キャッシュのメモリリークを一歩ずつ追跡する全過程
  • 最終結果:無限の増加から安定したメモリへ
Photo by 章亦春
  • なぜ低トラフィックの OpenResty アプリがメモリをリークし続けたのか
  • LRU キャッシュのメモリリークを一歩ずつ追跡する全過程
  • 最終結果:無限の増加から安定したメモリへ

Java アプリケーションプロファイリング:CPU、Off-CPU、ディスク I/O を Safepoint バイアスなしで分析

  • フレームグラフで Java CPU ホットスポットをプロファイリング
  • Off-CPU Java プロファイリング:ロック競合とブロッキング分析
  • Java ディスク I/O プロファイリング:ファイルとソケットの書き込みを追跡
  • OpenJDK 8/11/17/21 アプリケーションプロファイリング対応
  • 自動サンプリングと専門家分析
  • パフォーマンスへの影響とオーバーヘッド
  • よくある質問
Photo by 章亦春
  • フレームグラフで Java CPU ホットスポットをプロファイリング
  • Off-CPU Java プロファイリング:ロック競合とブロッキング分析
  • Java ディスク I/O プロファイリング:ファイルとソケットの書き込みを追跡
  • OpenJDK 8/11/17/21 アプリケーションプロファイリング対応
  • 自動サンプリングと専門家分析
  • パフォーマンスへの影響とオーバーヘッド
  • よくある質問

PHP メモリプロファイラ:稼働中の PHP プロセスから最大のメモリオブジェクトを特定する

  • 症状: PHP プロセスが top で大量のメモリを消費
  • OpenResty XRay のガイド分析でプロセスをプロファイリングし、最大の PHP オブジェクトを特定
  • 最大のオブジェクトをソース行まで追跡
  • Insights レポートで PHP プロセスのメモリを自動監視
  • よくある質問
  • OpenResty XRay について
  • 症状: PHP プロセスが top で大量のメモリを消費
  • OpenResty XRay のガイド分析でプロセスをプロファイリングし、最大の PHP オブジェクトを特定
  • 最大のオブジェクトをソース行まで追跡
  • Insights レポートで PHP プロセスのメモリを自動監視
  • よくある質問
  • OpenResty XRay について

Perl プロセス内で最大のメモリオブジェクトを特定する

  • 症状: top で Perl プロセスのメモリ使用率が高い
  • OpenResty XRay の Guided Analysis で最大の Perl オブジェクトを特定する
  • 最大のオブジェクトをソースファイルまで追跡する
  • Insights レポートで Perl プロセスのメモリを自動監視する
  • よくある質問(FAQ)
  • OpenResty XRay について
  • 症状: top で Perl プロセスのメモリ使用率が高い
  • OpenResty XRay の Guided Analysis で最大の Perl オブジェクトを特定する
  • 最大のオブジェクトをソースファイルまで追跡する
  • Insights レポートで Perl プロセスのメモリを自動監視する
  • よくある質問(FAQ)
  • OpenResty XRay について

Django メモリプロファイラ:稼働中アプリのメモリ使用状況をオブジェクト単位で分析する

  • ps で高メモリの Django プロセスを見つける
  • Guided Analysis で Django アプリのメモリ使用状況をプロファイリングする
  • フレームグラフを読む:どの Python モジュールが最もメモリを使っているか
  • Insights で Django のメモリ使用状況を自動監視する
  • OpenResty XRay とは
  • ps で高メモリの Django プロセスを見つける
  • Guided Analysis で Django アプリのメモリ使用状況をプロファイリングする
  • フレームグラフを読む:どの Python モジュールが最もメモリを使っているか
  • Insights で Django のメモリ使用状況を自動監視する
  • OpenResty XRay とは

Python メモリプロファイラ:コード変更なしで最も RAM を消費するオブジェクトを特定する

  • どの Python プロセスが最もメモリを消費しているかを特定する
  • ガイド分析で Python メモリをプロファイリングし、最大のオブジェクトとそのモジュールを特定する
  • 定期レポートで Python のメモリ使用量を自動監視する
  • OpenResty XRay について
  • どの Python プロセスが最もメモリを消費しているかを特定する
  • ガイド分析で Python メモリをプロファイリングし、最大のオブジェクトとそのモジュールを特定する
  • 定期レポートで Python のメモリ使用量を自動監視する
  • OpenResty XRay について

OpenResty XRay を使用して、オンラインの Kong サービスプロセス内のプラグインの CPU およびメモリ使用量をリアルタイムで統計化する方法

  • サーバープロセス内のすべての Kong プラグインの CPU 使用状況
  • サーバープロセス内のすべての Kong プラグインのメモリ使用状況
  • サーバーへの追加負荷
  • 今後の展開
Photo by 章亦春
  • サーバープロセス内のすべての Kong プラグインの CPU 使用状況
  • サーバープロセス内のすべての Kong プラグインのメモリ使用状況
  • サーバーへの追加負荷
  • 今後の展開

メモリ使用量が 60% 削減、OpenResty XRay で問題コードを正確に特定し、迅速に修正・デプロイを実現

  • worker プロセスのメモリ使用量が高い問題について
  • OpenResty XRay による分析プロセス
  • worker プロセスのメモリが解放されない疑問について
Photo by 章亦春
  • worker プロセスのメモリ使用量が高い問題について
  • OpenResty XRay による分析プロセス
  • worker プロセスのメモリが解放されない疑問について

OpenResty と Nginx の共有メモリ領域におけるメモリフラグメンテーションの問題

  • 空の共有メモリ領域
  • 類似サイズのエントリで埋める
  • 奇数キーの削除
  • 前半部分のキーの削除
  • メモリフラグメンテーションの緩和
Photo by Elena Mozhvilo
  • 空の共有メモリ領域
  • 類似サイズのエントリで埋める
  • 奇数キーの削除
  • 前半部分のキーの削除
  • メモリフラグメンテーションの緩和

OpenResty と Nginx の共有メモリ領域が物理メモリをどのように消費するか

  • Slab とメモリページ
  • 割り当てられたメモリが必ずしも消費されるわけではない
  • 偽のメモリリーク
  • HUP による再読み込み
Photo by Jose G. Ortega Castro
  • Slab とメモリページ
  • 割り当てられたメモリが必ずしも消費されるわけではない
  • 偽のメモリリーク
  • HUP による再読み込み

OpenResty と Nginx のメモリ割り当てと管理方法

  • Nginx のメモリ使用量を確認する方法
  • システムレベル
  • アプリケーションレベル
  • 従来の Nginx サーバー
  • FAQ: Nginx はどれだけのメモリを必要とするか
Photo by Harrison Broadbent
  • Nginx のメモリ使用量を確認する方法
  • システムレベル
  • アプリケーションレベル
  • 従来の Nginx サーバー
  • FAQ: Nginx はどれだけのメモリを必要とするか

LuaJIT GC64 モード

  • 旧メモリ制限
    • このメモリ制限に遭遇する時期
    • メモリ制限はプロセスごと
    • GC が管理するメモリ
    • GC が管理しないメモリ
    • x64 モードのメモリ上限を 4 GB に引き上げる
  • 新しい GC64 モード
    • GC64 モードの有効化方法
    • パフォーマンスへの影響
    • デバッグ分析ツールチェーン
  • 旧メモリ制限
    • このメモリ制限に遭遇する時期
    • メモリ制限はプロセスごと
    • GC が管理するメモリ
    • GC が管理しないメモリ
    • x64 モードのメモリ上限を 4 GB に引き上げる
  • 新しい GC64 モード
    • GC64 モードの有効化方法
    • パフォーマンスへの影響
    • デバッグ分析ツールチェーン
お問い合わせ

ご意見・ご感想をお待ちしております 👋

メッセージを送信しました!

専門家チームが24時間以内にご連絡いたします。
x