精选文章

Photo by Philip Brown

動的トレーシング技術概説

動的トレーシング技術概説

Photo by OpenResty Inc.

OpenResty XRay による ビリビリ動画の重大なオンライン障害の分析と解決

OpenResty XRay による ビリビリ動画の重大なオンライン障害の分析と解決

バイナリ脆弱性スキャン:バックポート済みパッチを検知し、誤検知を削減

バイナリ脆弱性スキャン:バックポート済みパッチを検知し、誤検知を削減

バイナリ脆弱性スキャン:バックポート済みパッチを検知し、誤検知を削減

OpenResty XRay 入門:コードを変更せずに、システム深層の「鼓動」を聴く

OpenResty XRay 入門:コードを変更せずに、システム深層の「鼓動」を聴く

OpenResty XRay 入門:コードを変更せずに、システム深層の「鼓動」を聴く

Nginx リバースプロキシの QPS が 15 分の 1 に低下:upstream keepalive の欠落と -O0 ビルドが原因だった

Nginx リバースプロキシの QPS が 15 分の 1 に低下:upstream keepalive の欠落と -O0 ビルドが原因だった

Nginx リバースプロキシの QPS が 15 分の 1 に低下:upstream keepalive の欠落と -O0 ビルドが原因だった

非侵入型 Java プロファイラ:Java Agent なしで本番環境のメソッド引数をキャプチャ

非侵入型 Java プロファイラ:Java Agent なしで本番環境のメソッド引数をキャプチャ

非侵入型 Java プロファイラ:Java Agent なしで本番環境のメソッド引数をキャプチャ

Photo by Jose G. Ortega Castro

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

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

Photo by Harrison Broadbent

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

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

OpenResty XRay で、パフォーマンスを大幅に向上し、CPU使用率を即座に削減  90%
OpenResty XRay で、パフォーマンスを大幅に向上し、CPU使用率を即座に削減 90%
無料トライアルを申し込む

最新記事

リークした Lua テーブルを特定する:registry / _LOADED(package.loaded)参照パス · OpenResty XRay

  • LuaJIT のメモリ管理方法
  • OpenResty XRay のコマンドラインツール
  • Lua テーブルのリーク例
  • LuaJIT GC オブジェクト種別ごとのメモリ内訳
  • lj-gco-ref フレームグラフの読み方:registry、_LOADED、package.loaded
  • 完全自動の Lua メモリリーク分析
  • LuaJIT のメモリ管理方法
  • OpenResty XRay のコマンドラインツール
  • Lua テーブルのリーク例
  • LuaJIT GC オブジェクト種別ごとのメモリ内訳
  • lj-gco-ref フレームグラフの読み方:registry、_LOADED、package.loaded
  • 完全自動の Lua メモリリーク分析

YSQL 言語を使用した Nginx プロセスのリアルタイムリクエスト数カウント

  • run-ysql ツールのインストール方法
  • リアルタイムの総リクエスト数の統計
  • 特定のリクエストのフィルタリング
  • Web コンソールでの YSQL の使用
  • 真の非侵襲的トレーシング
Photo by 章亦春
  • run-ysql ツールのインストール方法
  • リアルタイムの総リクエスト数の統計
  • 特定のリクエストのフィルタリング
  • Web コンソールでの YSQL の使用
  • 真の非侵襲的トレーシング

Microsoft Azure クラウド上に OpenResty XRay オンプレミス版をインストールする

  • サブスクリプションとリソースグループの作成
  • Azure Kubernetes サービスの作成
  • 環境変数の準備
  • コマンドラインから Azure にログイン\n* Kubernetes の namespace と secret の作成
  • Azure ディスクの作成
  • 永続化ボリュームの設定ファイルの更新
  • Kubernetes の設定ファイルの更新
  • 永続化ボリュームの作成
  • Kubernetes サービスのデプロイ
  • アプリケーションゲートウェイの設定
  • サブスクリプションとリソースグループの作成
  • Azure Kubernetes サービスの作成
  • 環境変数の準備
  • コマンドラインから Azure にログイン\n* Kubernetes の namespace と secret の作成
  • Azure ディスクの作成
  • 永続化ボリュームの設定ファイルの更新
  • Kubernetes の設定ファイルの更新
  • 永続化ボリュームの作成
  • Kubernetes サービスのデプロイ
  • アプリケーションゲートウェイの設定

Lua io.popen が Nginx イベントループをブロックする問題:スループット 150 倍改善の実例

  • 問題点:毎秒 130 リクエスト
  • OpenResty XRay によるブロッキング特定
  • io.popen のノンブロッキング代替
  • 結果:7 倍と 150 倍
  • よくある質問
Photo by Yichun Zhang
  • 問題点:毎秒 130 リクエスト
  • OpenResty XRay によるブロッキング特定
  • io.popen のノンブロッキング代替
  • 結果:7 倍と 150 倍
  • よくある質問

OpenResty XRay についての FAQ

OpenResty XRay 製品のための「よくある質問」ドキュメントを作成
Photo by Yichun Zhang
OpenResty XRay 製品のための「よくある質問」ドキュメントを作成

Nginx 正規表現のパフォーマンス:動的トレーシングで遅いパターンを特定

  • 前提条件とセットアップ
  • CPU フレームグラフによる遅い正規表現の特定
  • 正規表現最適化後のパフォーマンス
  • lua_regex_match_limit による PCRE バックトラッキングの制限
  • 非バックトラッキングエンジン:RE2 と OpenResty Regex
  • 正規表現の代替としての Lua 組み込みパターン
  • Docker・Kubernetes 内での正規表現パフォーマンスのトレース
  • 動的トレーシングツールの仕組み
  • ツールのオーバーヘッド:非サンプリング時はゼロ
  • FAQ:Nginx 正規表現のパフォーマンス
  • 前提条件とセットアップ
  • CPU フレームグラフによる遅い正規表現の特定
  • 正規表現最適化後のパフォーマンス
  • lua_regex_match_limit による PCRE バックトラッキングの制限
  • 非バックトラッキングエンジン:RE2 と OpenResty Regex
  • 正規表現の代替としての Lua 組み込みパターン
  • Docker・Kubernetes 内での正規表現パフォーマンスのトレース
  • 動的トレーシングツールの仕組み
  • ツールのオーバーヘッド:非サンプリング時はゼロ
  • FAQ:Nginx 正規表現のパフォーマンス

OpenResty または Nginx プロセスにおける読み込み済み Lua モジュールの一覧表示

  • システム環境
  • 読み込み済み Lua モジュールの名前
  • Web コンソールで直接実行
  • コンテナ内のアプリケーションのトレース
  • ツールの実装方法
  • ツールのオーバーヘッド
Photo by Yichun Zhang
  • システム環境
  • 読み込み済み Lua モジュールの名前
  • Web コンソールで直接実行
  • コンテナ内のアプリケーションのトレース
  • ツールの実装方法
  • ツールのオーバーヘッド

Nginx の CPU 使用率が高い:最も CPU を消費するリクエストを特定する

  • 前提条件と環境のセットアップ
  • どのリクエストのホスト名が最も CPU を消費するか特定する
  • どのリクエスト URI が最も CPU を消費するか特定する
  • さらに深く掘り下げる:なぜ一部のホスト名がより多くの CPU を使うのか
  • Web コンソールでツールを実行する
  • コンテナ内で Nginx の CPU 使用率をトレースする
  • CPU プロファイリングツールの仕組み
  • プロファイリングツールのオーバーヘッド
  • よくある質問
Photo by Yichun Zhang
  • 前提条件と環境のセットアップ
  • どのリクエストのホスト名が最も CPU を消費するか特定する
  • どのリクエスト URI が最も CPU を消費するか特定する
  • さらに深く掘り下げる:なぜ一部のホスト名がより多くの CPU を使うのか
  • Web コンソールでツールを実行する
  • コンテナ内で Nginx の CPU 使用率をトレースする
  • CPU プロファイリングツールの仕組み
  • プロファイリングツールのオーバーヘッド
  • よくある質問

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

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

Lua CPU フレームグラフ実践:本番環境で LuaJIT のボトルネックを特定

  • Lua CPU フレームグラフとは
  • 簡単な LuaJIT アプリで精度を検証
  • 本番環境での複雑な LuaJIT アプリのプロファイリング
  • サンプリングオーバーヘッド
  • 本番環境の安全性:ターゲットプロセスを 1 ビットも変更しない
  • 互換性
  • よくある質問
Photo by Guido Jansen
  • Lua CPU フレームグラフとは
  • 簡単な LuaJIT アプリで精度を検証
  • 本番環境での複雑な LuaJIT アプリのプロファイリング
  • サンプリングオーバーヘッド
  • 本番環境の安全性:ターゲットプロセスを 1 ビットも変更しない
  • 互換性
  • よくある質問

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 モードの有効化方法
    • パフォーマンスへの影響
    • デバッグ分析ツールチェーン

動的トレーシング技術概説

  • 動的トレーシングとは
  • 動的トレーシングの利点
  • DTrace と SystemTap
  • SystemTap の実運用での活用
  • フレームグラフ
  • 方法論
  • 知識は力なり
  • オープンソースとデバッグシンボル
  • Linux カーネルのサポート
  • ハードウェアトレーシング
  • 終了プロセスの解析
  • 従来のデバッグ技術
  • 混沌としたデバッグの世界
  • OpenResty XRay
Photo by Philip Brown
  • 動的トレーシングとは
  • 動的トレーシングの利点
  • DTrace と SystemTap
  • SystemTap の実運用での活用
  • フレームグラフ
  • 方法論
  • 知識は力なり
  • オープンソースとデバッグシンボル
  • Linux カーネルのサポート
  • ハードウェアトレーシング
  • 終了プロセスの解析
  • 従来のデバッグ技術
  • 混沌としたデバッグの世界
  • OpenResty XRay

本番環境のメモリリーク特定:RSS 増加からソースコード行番号までの階層的な原因分析

  • 症状:増加する一方のメモリ曲線
  • メモリリークか、単なる高メモリ使用か
  • 4 つのリークパターンと実際の根本原因チェーン
  • 増えているように見えて、実はリークではないケース
  • リーク特定の手法:トップダウンの階層的な原因分析
  • 従来ツールが本番環境で通用しない理由
  • よくある質問
  • 症状:増加する一方のメモリ曲線
  • メモリリークか、単なる高メモリ使用か
  • 4 つのリークパターンと実際の根本原因チェーン
  • 増えているように見えて、実はリークではないケース
  • リーク特定の手法:トップダウンの階層的な原因分析
  • 従来ツールが本番環境で通用しない理由
  • よくある質問

Off-CPU 分析の実践:CPU 使用率が低いのにレイテンシが高い 4 つの根本原因と特定方法

  • Off-CPU 時間とは何か
  • 症状:CPU 使用率が上がらないのにリクエストが滞留する
  • 4 つの Off-CPU 根本原因の実例による因果チェーン
  • Off-CPU 時間の定量化手法
  • On-CPU + Off-CPU = ウォールクロック時間:全体像とツールエコシステム
  • よくある質問
  • Off-CPU 時間とは何か
  • 症状:CPU 使用率が上がらないのにリクエストが滞留する
  • 4 つの Off-CPU 根本原因の実例による因果チェーン
  • Off-CPU 時間の定量化手法
  • On-CPU + Off-CPU = ウォールクロック時間:全体像とツールエコシステム
  • よくある質問

OpenResty XRay AI アシスタント:すべての分析データに語らせる

  • 「レポートを ChatGPT に貼り付ける」のと何が違うのか?
  • 3 つの典型的なシナリオ
  • よくある質問:AI は本当にフレームグラフを読めるのか?どこまで信頼できるのか?
  • 「レポートを ChatGPT に貼り付ける」のと何が違うのか?
  • 3 つの典型的なシナリオ
  • よくある質問:AI は本当にフレームグラフを読めるのか?どこまで信頼できるのか?

コード変更・サービス再起動なし:OpenResty XRay による本番環境での動的トレーシング実践法

  • 既存の動的トレーシングフレームワークが本番環境で抱える限界と課題とは?
  • OpenResty XRay が動的トレーシングのアーキテクチャ設計で実現した技術的革新とは?
  • フルスタックフレームグラフとは何か?
  • OpenResty XRay の対応範囲はどのように継続的に広がっているか?
  • 既存の動的トレーシングフレームワークが本番環境で抱える限界と課題とは?
  • OpenResty XRay が動的トレーシングのアーキテクチャ設計で実現した技術的革新とは?
  • フルスタックフレームグラフとは何か?
  • OpenResty XRay の対応範囲はどのように継続的に広がっているか?

OpenResty XRay 入門:コードを変更せずに、システム深層の「鼓動」を聴く

  • OpenResty XRay が実現する究極の可観測性基盤
  • シグナルからインサイトへ
  • 次世代のクラウドネイティブ・エンジニアリング
  • オープンなエコシステムと堅牢な技術基盤
  • OpenResty XRay が実現する究極の可観測性基盤
  • シグナルからインサイトへ
  • 次世代のクラウドネイティブ・エンジニアリング
  • オープンなエコシステムと堅牢な技術基盤

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

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

Nginx リバースプロキシの QPS が 15 分の 1 に低下:upstream keepalive の欠落と -O0 ビルドが原因だった

  • Nginx リバースプロキシが 15 分の 1 に低速化、それでもエラーログはゼロ
  • フレームグラフが暴いた接続ストーム:upstream keepalive の欠落
  • 残り 10% の差:ベースライン比較がコンパイラを指し示す
  • -O0 デバッグビルドが 10% の性能を奪っていた
  • Nginx リバースプロキシが 15 分の 1 に低速化、それでもエラーログはゼロ
  • フレームグラフが暴いた接続ストーム:upstream keepalive の欠落
  • 残り 10% の差:ベースライン比較がコンパイラを指し示す
  • -O0 デバッグビルドが 10% の性能を奪っていた

50万 QPS の OpenResty ゲートウェイで発生した「謎の 244ms 遅延」の原因を特定した話

  • 良好な平均値の裏に潜むレイテンシースパイクと CPU の浪費
  • コード変更・再起動なしで行う OpenResty レイテンシーのトラブルシューティング
  • 最適化の結果:レイテンシースパイクの解消と CPU 使用率 30% 削減
  • よくある質問
  • 良好な平均値の裏に潜むレイテンシースパイクと CPU の浪費
  • コード変更・再起動なしで行う OpenResty レイテンシーのトラブルシューティング
  • 最適化の結果:レイテンシースパイクの解消と CPU 使用率 30% 削減
  • よくある質問

プラグインが CPU の 45% を食い潰した際、ソースコードなしで Lua の 93 行目を特定した方法?

  • perf が「ブラック ボックス」に直面したとき *「サンプリング」から「フルスタック動的トレーシング」へ
  • 証拠の連鎖を特定する
  • 「何が起こったか」から「なぜ」へ
  • perf が「ブラック ボックス」に直面したとき *「サンプリング」から「フルスタック動的トレーシング」へ
  • 証拠の連鎖を特定する
  • 「何が起こったか」から「なぜ」へ

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

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

OpenResty XRay バージョン 25.10.11 正式リリース

  • 特に注目すべき 3 つのポイント
  • 診断精度と安定性の強化
  • ユーザビリティとセキュリティの強化
  • アップグレード方法
  • 特に注目すべき 3 つのポイント
  • 診断精度と安定性の強化
  • ユーザビリティとセキュリティの強化
  • アップグレード方法

Gzip CPU 使用率が高い原因:圧縮レベル 6 が CPU の 54% を消費した実例

  • 本番環境で Gzip 圧縮が CPU の 54% を消費していた経緯
  • Gzip の CPU 使用率が高かった原因:設定パラメータレベルの診断
  • Gzip と Brotli の CPU オーバーヘッドを定量化する
  • 勘に頼る調整からデータ駆動の圧縮チューニングへ
  • 本番環境で Gzip 圧縮が CPU の 54% を消費していた経緯
  • Gzip の CPU 使用率が高かった原因:設定パラメータレベルの診断
  • Gzip と Brotli の CPU オーバーヘッドを定量化する
  • 勘に頼る調整からデータ駆動の圧縮チューニングへ

Nginx C++ モジュールのメモリリーク:本番環境で再起動なしに根本原因を特定

  • 本番環境の難題:GDB でデバッグできない C++ モジュールのメモリリーク
  • フレームグラフで ngx_dubbo_module 内のリーク関数を特定する方法
  • 受動的な対応から能動的な支援へ:XRay が実現するトラブルシューティングの新たなサイクル
  • まとめ
Photo by 章亦春
  • 本番環境の難題:GDB でデバッグできない C++ モジュールのメモリリーク
  • フレームグラフで ngx_dubbo_module 内のリーク関数を特定する方法
  • 受動的な対応から能動的な支援へ:XRay が実現するトラブルシューティングの新たなサイクル
  • まとめ

非侵入型 Java プロファイラ:Java Agent なしで本番環境のメソッド引数をキャプチャ

  • なぜ非侵入型 Java プロファイリングが本番環境で重要なのか
  • 実践デモ:本番環境で Java メソッド引数をキャプチャ
  • OpenResty XRay と一般的な Java プロファイラの違い
  • よくある質問
  • なぜ非侵入型 Java プロファイリングが本番環境で重要なのか
  • 実践デモ:本番環境で Java メソッド引数をキャプチャ
  • OpenResty XRay と一般的な Java プロファイラの違い
  • よくある質問

自動根本原因分析:OpenResty XRay が障害をコード行レベルまで特定する仕組み

  • なぜ「より多くのオブザーバビリティデータ」が「より速い根本原因分析」を意味しないのか
  • XRay の自動根本原因分析は従来の監視とどう違うのか
  • 自動根本原因分析の実例:3 つの本番環境ケース
  • よくある質問(FAQ)
  • なぜ「より多くのオブザーバビリティデータ」が「より速い根本原因分析」を意味しないのか
  • XRay の自動根本原因分析は従来の監視とどう違うのか
  • 自動根本原因分析の実例:3 つの本番環境ケース
  • よくある質問(FAQ)

Node.js 関数プローブ:コードを変更せず実行中の関数の引数を捕捉する

  • なぜコードを変更せずに Node.js 関数を追跡するのか?
  • コードを変更せずに Node.js 関数の引数を捕捉する方法
  • 本番環境でチームが非侵入型 Node.js プローブをどう活用するか
  • なぜコードを変更せずに Node.js 関数を追跡するのか?
  • コードを変更せずに Node.js 関数の引数を捕捉する方法
  • 本番環境でチームが非侵入型 Node.js プローブをどう活用するか

300 RPS で頭打ちの Nginx Worker プロセス:原因は 75 ミリ秒のイベントループ・ブロッキング

  • 負荷は高いのに仕事が進まない:worker_cpu_affinity 欠落による CPU リソース競合
  • ブロッキング Lua I/O 呼び出しが Nginx イベントループを停止させた仕組み
  • ファイル I/O レイテンシーの測定:1 回あたり最大 1.5 ミリ秒
  • Nginx イベントループのブロッキングはどれほど深刻だったか:43,952 サンプル、最大 75 ミリ秒
  • よくある質問
  • 負荷は高いのに仕事が進まない:worker_cpu_affinity 欠落による CPU リソース競合
  • ブロッキング Lua I/O 呼び出しが Nginx イベントループを停止させた仕組み
  • ファイル I/O レイテンシーの測定:1 回あたり最大 1.5 ミリ秒
  • Nginx イベントループのブロッキングはどれほど深刻だったか:43,952 サンプル、最大 75 ミリ秒
  • よくある質問

非侵入型 Node.js CPU プロファイリング:フレームグラフによる実践分析

  • 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)

UDB + OpenResty XRay:OpenResty アプリケーションのパフォーマンスの謎を解き明かす

  • OpenResty XRay と UDB の連携による効率化
  • 実践:UDB と OpenResty XRay を用いた OpenResty アプリケーションにおける Lua コード呼び出しスタックの分析
  • 時間遡行デバッグの利点
  • まとめ
Photo by 章亦春
  • OpenResty XRay と UDB の連携による効率化
  • 実践:UDB と OpenResty XRay を用いた OpenResty アプリケーションにおける Lua コード呼び出しスタックの分析
  • 時間遡行デバッグの利点
  • まとめ

UDB と OpenResty XRay による Perl コード実行全プロセスの可視化

  • UDB とは?
  • 実践:OpenResty XRay と UDB を使用した Perl アプリケーションのコードコールスタック分析
  • なぜ、より多くの開発者が UDB を選択するのでしょうか?
  • まとめ
Photo by 章亦春
  • UDB とは?
  • 実践:OpenResty XRay と UDB を使用した Perl アプリケーションのコードコールスタック分析
  • なぜ、より多くの開発者が UDB を選択するのでしょうか?
  • まとめ

Java ファイル I/O をタイムトラベルコールスタックでデバッグする方法

  • Java ファイル I/O における IDE ブレークポイントと coredump の限界
  • Native write() システムコールからの完全な Java コールスタック再構築
  • タイムトラベル再生による Java ファイル I/O の段階的デバッグ
  • よくある質問
Photo by 章亦春
  • Java ファイル I/O における IDE ブレークポイントと coredump の限界
  • Native write() システムコールからの完全な Java コールスタック再構築
  • タイムトラベル再生による Java ファイル I/O の段階的デバッグ
  • よくある質問

UDB のタイムトラベル機能を活用し、Python コードの実行プロセスを解明

  • Python デバッグにおける UDB の独自の価値
  • OpenResty XRay との連携によるデバッグ能力の強化
  • 実践事例:Python のネットワークリクエストにおけるコールスタックの分析
  • まとめ
Photo by 章亦春
  • Python デバッグにおける UDB の独自の価値
  • OpenResty XRay との連携によるデバッグ能力の強化
  • 実践事例:Python のネットワークリクエストにおけるコールスタックの分析
  • まとめ

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

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

Nginx Worker の CPU 使用率の偏り:reuseport 未設定と cjson ボトルネックを特定

  • 症状:一部の Nginx Worker プロセスだけ CPU が張り付き、他はアイドル状態
  • OpenResty XRay による根本原因の特定
  • 修正:3 つの最適化とそれぞれの実測効果
  • 要約:OpenResty XRay が数分で特定した内容
  • よくある質問
Photo by 章亦春
  • 症状:一部の Nginx Worker プロセスだけ CPU が張り付き、他はアイドル状態
  • OpenResty XRay による根本原因の特定
  • 修正:3 つの最適化とそれぞれの実測効果
  • 要約:OpenResty XRay が数分で特定した内容
  • よくある質問

動的トレースの万能ツール:Y 言語が動的トレースを簡単にする方法

  • モダンソフトウェアアーキテクチャにおける問題解決がますます難しくなっている理由
  • 可観測性技術の進化と将来展望
  • 動的トレース技術はどのように抽象化レイヤーを通過するのか?
  • 「時間+空間」二次元トラッキングモデル
  • 実践事例:オンライン Kong サービスにおけるプラグインリソース消費のリアルタイム統計
Photo by 章亦春
  • モダンソフトウェアアーキテクチャにおける問題解決がますます難しくなっている理由
  • 可観測性技術の進化と将来展望
  • 動的トレース技術はどのように抽象化レイヤーを通過するのか?
  • 「時間+空間」二次元トラッキングモデル
  • 実践事例:オンライン Kong サービスにおけるプラグインリソース消費のリアルタイム統計

OpenResty XRay の画期的なアップデート:Java アプリケーションのメモリと Envoy Lua のパフォーマンスを非侵入で分析

  • 非侵入で、Java アプリケーションのメモリを徹底解明
  • Envoy 内の Lua パフォーマンス・ブラックボックスを初めて解明
  • 挑戦は続いています
Photo by 章亦春
  • 非侵入で、Java アプリケーションのメモリを徹底解明
  • Envoy 内の Lua パフォーマンス・ブラックボックスを初めて解明
  • 挑戦は続いています

動的トレースが本番環境デバッグの未来である理由

  • 動的トレース技術の実装における課題
  • OpenResty XRay:次世代動的トレーシングソリューション
  • 結語:動的トレースの未来
Photo by 章亦春
  • 動的トレース技術の実装における課題
  • OpenResty XRay:次世代動的トレーシングソリューション
  • 結語:動的トレースの未来

動的トレーシング技術の深層:OpenResty XRay がどのように問題診断方法を根本的に変革するか

  • 動的トレーシング:複雑なシステム問題を解決する強力なツール
  • なぜ OpenResty XRay をお選びいただくべきか?
  • 製品フォーカス:実際のシナリオにおける XRay の適用事例
  • よくある誤解と FAQ:動的トレースについて知っておきたいこと
Photo by 章亦春
  • 動的トレーシング:複雑なシステム問題を解決する強力なツール
  • なぜ OpenResty XRay をお選びいただくべきか?
  • 製品フォーカス:実際のシナリオにおける XRay の適用事例
  • よくある誤解と FAQ:動的トレースについて知っておきたいこと

動的トレーシングの実装が難しい理由とは?OpenResty XRay はどのようにこの課題を解決するのか?

  • 動的トレース技術の実装における課題
  • OpenResty XRay:次世代動的トレーシングソリューション
  • 結語:動的トレースの未来
Photo by 章亦春
  • 動的トレース技術の実装における課題
  • OpenResty XRay:次世代動的トレーシングソリューション
  • 結語:動的トレースの未来

ログ、イベントトラッキング、A/B テストだけでは不十分?「動的トレーシング」を理解すべき時期

  • 従来の方法 vs 動的トレーシング:効率性と制御力の革命
  • 動的トレース:システムの「透視眼」
  • フレームグラフからシステム全体像へ
  • OpenResty XRay を選ぶ理由
  • 可観測性の未来:動的トレースの新境地
Photo by 章亦春
  • 従来の方法 vs 動的トレーシング:効率性と制御力の革命
  • 動的トレース:システムの「透視眼」
  • フレームグラフからシステム全体像へ
  • OpenResty XRay を選ぶ理由
  • 可観測性の未来:動的トレースの新境地

可観測性の次なる段階:OpenResty XRay が問題解決を再定義する方法

  • モダンソフトウェアアーキテクチャにおける問題解決がますます難しくなっている理由
  • 可観測性技術の進化と将来展望
  • 動的トレース技術はどのように抽象化レイヤーを通過するのか?
  • 「時間+空間」二次元トラッキングモデル
  • 実践事例:オンライン Kong サービスにおけるプラグインリソース消費のリアルタイム統計
Photo by 章亦春
  • モダンソフトウェアアーキテクチャにおける問題解決がますます難しくなっている理由
  • 可観測性技術の進化と将来展望
  • 動的トレース技術はどのように抽象化レイヤーを通過するのか?
  • 「時間+空間」二次元トラッキングモデル
  • 実践事例:オンライン Kong サービスにおけるプラグインリソース消費のリアルタイム統計

ブラックボックスからホワイトボックスへ:OpenResty XRay でシステム問題を可視化する

  • ブラックボックスをホワイトボックスに変える動的トレースツール
  • 多角的な総合分析能力
  • 実例紹介
  • 製品ビジョン
Photo by 章亦春
  • ブラックボックスをホワイトボックスに変える動的トレースツール
  • 多角的な総合分析能力
  • 実例紹介
  • 製品ビジョン

自己最適化:OpenResty XRay の性能変革

  • 課題と痛点
  • OpenResty XRay の自己分析プロセス
  • 驚くべき最適化の成果
  • 技術的洞察とビジネス価値
Photo by 章亦春
  • 課題と痛点
  • OpenResty XRay の自己分析プロセス
  • 驚くべき最適化の成果
  • 技術的洞察とビジネス価値

OpenResty XRay によるスクリプトパフォーマンスの 44 倍向上

  • 実例:ボトルネックの発見から大幅な高速化まで
  • OpenResty XRay の動作原理
  • 最適化の効果
  • 適用シナリオと実践的なアドバイス
Photo by 章亦春
  • 実例:ボトルネックの発見から大幅な高速化まで
  • OpenResty XRay の動作原理
  • 最適化の効果
  • 適用シナリオと実践的なアドバイス

OpenResty XRay Web コンソール:自動分析レポート・リアルタイム指標・ガイド付き根本原因分析

  • Insights ページで何が見られるか
  • 分析レポートの読み方
  • Dashboard に表示される指標
  • Guided Analysis で高 CPU 使用率を診断
  • OpenResty XRay の Agent を設定
  • OpenResty XRay とは
  • Insights ページで何が見られるか
  • 分析レポートの読み方
  • Dashboard に表示される指標
  • Guided Analysis で高 CPU 使用率を診断
  • OpenResty XRay の Agent を設定
  • OpenResty XRay とは

OpenResty XRay モバイルアプリ:スマホからアプリを監視・トラブルシューティング(Android & iOS)

  • OpenResty XRay Android 版のダウンロードとインストール
  • OpenResty XRay へのログイン
  • 全自動分析レポート
  • ダッシュボードページでパフォーマンスチャートデータの確認
  • Guided Analysis 機能
  • よくある質問
  • OpenResty XRay Android 版のダウンロードとインストール
  • OpenResty XRay へのログイン
  • 全自動分析レポート
  • ダッシュボードページでパフォーマンスチャートデータの確認
  • Guided Analysis 機能
  • よくある質問

OpenResty XRay についての FAQ

OpenResty XRay 製品のための「よくある質問」ドキュメントを作成
Photo by Yichun Zhang
OpenResty XRay 製品のための「よくある質問」ドキュメントを作成

Nginx 正規表現のパフォーマンス:動的トレーシングで遅いパターンを特定

  • 前提条件とセットアップ
  • CPU フレームグラフによる遅い正規表現の特定
  • 正規表現最適化後のパフォーマンス
  • lua_regex_match_limit による PCRE バックトラッキングの制限
  • 非バックトラッキングエンジン:RE2 と OpenResty Regex
  • 正規表現の代替としての Lua 組み込みパターン
  • Docker・Kubernetes 内での正規表現パフォーマンスのトレース
  • 動的トレーシングツールの仕組み
  • ツールのオーバーヘッド:非サンプリング時はゼロ
  • FAQ:Nginx 正規表現のパフォーマンス
  • 前提条件とセットアップ
  • CPU フレームグラフによる遅い正規表現の特定
  • 正規表現最適化後のパフォーマンス
  • lua_regex_match_limit による PCRE バックトラッキングの制限
  • 非バックトラッキングエンジン:RE2 と OpenResty Regex
  • 正規表現の代替としての Lua 組み込みパターン
  • Docker・Kubernetes 内での正規表現パフォーマンスのトレース
  • 動的トレーシングツールの仕組み
  • ツールのオーバーヘッド:非サンプリング時はゼロ
  • FAQ:Nginx 正規表現のパフォーマンス

動的トレーシング技術概説

  • 動的トレーシングとは
  • 動的トレーシングの利点
  • DTrace と SystemTap
  • SystemTap の実運用での活用
  • フレームグラフ
  • 方法論
  • 知識は力なり
  • オープンソースとデバッグシンボル
  • Linux カーネルのサポート
  • ハードウェアトレーシング
  • 終了プロセスの解析
  • 従来のデバッグ技術
  • 混沌としたデバッグの世界
  • OpenResty XRay
Photo by Philip Brown
  • 動的トレーシングとは
  • 動的トレーシングの利点
  • DTrace と SystemTap
  • SystemTap の実運用での活用
  • フレームグラフ
  • 方法論
  • 知識は力なり
  • オープンソースとデバッグシンボル
  • Linux カーネルのサポート
  • ハードウェアトレーシング
  • 終了プロセスの解析
  • 従来のデバッグ技術
  • 混沌としたデバッグの世界
  • OpenResty XRay

Kubernetes クラスター上に OpenResty XRay の Agent をインストールする

  • コンソールにログイン
  • Kubernetes クラスター上に Agent をインストール
  • アプリケーションの設定と検出
  • アナライザーの起動と分析結果の確認
  • 別の Agent のインストール
  • コンソールにログイン
  • Kubernetes クラスター上に Agent をインストール
  • アプリケーションの設定と検出
  • アナライザーの起動と分析結果の確認
  • 別の Agent のインストール

Amazon Linux 上での OpenResty XRay Agent のインストール方法(Bundle パッケージを使用)

  • コンソールにログイン
  • Bundle パッケージを使用した Agent のインストール
  • アプリケーションの設定と検出
  • アナライザの起動と分析結果の確認
  • 別の Agent のインストールt
  • コンソールにログイン
  • Bundle パッケージを使用した Agent のインストール
  • アプリケーションの設定と検出
  • アナライザの起動と分析結果の確認
  • 別の Agent のインストールt

CentOS 上に OpenResty XRay の Agent をインストールする方法(RPM パッケージリポジトリを使用)

  • コンソールにログイン
  • RPM パッケージリポジトリを使用した Agent のインストール
  • 检查 Agent 状态和日志
  • アプリケーションの設定と検出
  • アナライザーの起動と分析結果の確認
  • 別の Agent のインストール
  • コンソールにログイン
  • RPM パッケージリポジトリを使用した Agent のインストール
  • 检查 Agent 状态和日志
  • アプリケーションの設定と検出
  • アナライザーの起動と分析結果の確認
  • 別の Agent のインストール

Microsoft Azure クラウド上に OpenResty XRay オンプレミス版をインストールする

  • サブスクリプションとリソースグループの作成
  • Azure Kubernetes サービスの作成
  • 環境変数の準備
  • コマンドラインから Azure にログイン\n* Kubernetes の namespace と secret の作成
  • Azure ディスクの作成
  • 永続化ボリュームの設定ファイルの更新
  • Kubernetes の設定ファイルの更新
  • 永続化ボリュームの作成
  • Kubernetes サービスのデプロイ
  • アプリケーションゲートウェイの設定
  • サブスクリプションとリソースグループの作成
  • Azure Kubernetes サービスの作成
  • 環境変数の準備
  • コマンドラインから Azure にログイン\n* Kubernetes の namespace と secret の作成
  • Azure ディスクの作成
  • 永続化ボリュームの設定ファイルの更新
  • Kubernetes の設定ファイルの更新
  • 永続化ボリュームの作成
  • Kubernetes サービスのデプロイ
  • アプリケーションゲートウェイの設定

Linux 上の Go サービスのディスク I/O 高負荷をデバッグする方法

  • ディスク I/O が高い Go プロセスの特定
  • フレームグラフで Go のディスク読み書きコードパスを追跡
  • 自動ディスク I/O 分析レポート
  • よくある質問
  • ディスク I/O が高い Go プロセスの特定
  • フレームグラフで Go のディスク読み書きコードパスを追跡
  • 自動ディスク I/O 分析レポート
  • よくある質問

OpenResty XRay を使用して Prometheus アプリケーション内の CPU 使用率が最も高い Go コードパスを特定する

  • 問題:高 CPU 使用率
  • CPU 使用率が最も高い Go コードパスを特定
  • 完全自動化された分析とレポート
  • 問題:高 CPU 使用率
  • CPU 使用率が最も高い Go コードパスを特定
  • 完全自動化された分析とレポート

CockroachDB の高 CPU 使用率:稼働中の Go サーバーをフレームグラフでプロファイリング

  • 問題:CockroachDB の高 CPU 使用率
  • Guided Analysis で最も CPU を消費する Go コードパスを特定する
  • 自動 CPU 分析とレポート
  • OpenResty XRay について
  • 問題:CockroachDB の高 CPU 使用率
  • Guided Analysis で最も CPU を消費する Go コードパスを特定する
  • 自動 CPU 分析とレポート
  • OpenResty XRay について

Go アプリケーションの追跡時における OpenResty XRay のシステムパフォーマンスへの影響

  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM エージェントの比較
  • よくある質問
  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM エージェントの比較
  • よくある質問

カスタム Ylang アナライザーを作成して Go プログラムを動的にトレースする(OpenResty XRay を使用)

  • Go 変数に 2 つのキーと値のペアを挿入
  • カスタム Ylang アナライザーを作成して Go プログラムを動的にトレース
  • テスト結果
  • Go 変数に 2 つのキーと値のペアを挿入
  • カスタム Ylang アナライザーを作成して Go プログラムを動的にトレース
  • テスト結果

etcd の高 CPU 使用率:フレームグラフで最も CPU を消費する Go コードパスを特定

  • 問題症状:etcd が CPU コアの 70% 以上を消費
  • OpenResty XRay のガイド付き分析で最も CPU を消費する Go コードパスを特定
  • etcd CPU の自動監視とレポート
  • OpenResty XRay とは
  • 問題症状:etcd が CPU コアの 70% 以上を消費
  • OpenResty XRay のガイド付き分析で最も CPU を消費する Go コードパスを特定
  • etcd CPU の自動監視とレポート
  • OpenResty XRay とは

Go サービスの CPU 使用率が異常に低い:稼働中プロセスの off-CPU 分析でブロッキングの根本原因を特定

  • 症状:リクエストが増えても Go サービスの CPU 使用率が上がらない
  • 稼働中の Go プロセスを OpenResty XRay で off-CPU 分析
  • 根因:ブロッキングなシェルコマンド呼び出し
  • 自動分析と日次・週次レポート
  • 症状:リクエストが増えても Go サービスの CPU 使用率が上がらない
  • 稼働中の Go プロセスを OpenResty XRay で off-CPU 分析
  • 根因:ブロッキングなシェルコマンド呼び出し
  • 自動分析と日次・週次レポート

Go 高 CPU 使用率:正規表現のコンパイルが CPU 時間の 36.8% を消費

  • Go プロセスの高 CPU 使用率を観察する
  • OpenResty XRay で Go の CPU 使用率をプロファイリングする
  • 自動モニタリングとレポート
  • OpenResty XRay について
  • Go プロセスの高 CPU 使用率を観察する
  • OpenResty XRay で Go の CPU 使用率をプロファイリングする
  • 自動モニタリングとレポート
  • OpenResty XRay について

XRay で Python アプリケーションのディスク I/O 高負荷を診断

  • ディスク I/O が高い Python プロセスの特定
  • フレームグラフで Python のディスク読み書きコードパスを追跡
  • 自動ディスク I/O 分析レポート
  • よくある質問
  • ディスク I/O が高い Python プロセスの特定
  • フレームグラフで Python のディスク読み書きコードパスを追跡
  • 自動ディスク I/O 分析レポート
  • よくある質問

Python アプリケーションの追跡時における OpenResty XRay のシステムパフォーマンスへの影響

  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM Agentの比較
  • よくある質問
  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM Agentの比較
  • よくある質問

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 について

Python プロセスの CPU 使用率が 8% のまま:off-CPU 分析でブロッキング subprocess.run 呼び出しを特定

  • 症状:リクエストが殺到しても Python プロセスの CPU 使用率が上がらない
  • OpenResty XRay の Guided Analysis でブロッキング Python コードパスを特定
  • Insights ページの自動分析とレポート
  • FAQ
  • 症状:リクエストが殺到しても Python プロセスの CPU 使用率が上がらない
  • OpenResty XRay の Guided Analysis でブロッキング Python コードパスを特定
  • Insights ページの自動分析とレポート
  • FAQ

Java Tomcat のレスポンスが遅い:リクエスト単位の PCAP で遅いリクエストをピンポイント特定

  • Tomcat のレスポンス遅延を診断、遅いリクエストをピンポイントで捕捉
  • 選択的パケットキャプチャ:レスポンス時間・ステータス・パスでフィルタ
  • リクエスト単位で PCAP をダウンロード
  • サーバー側遅延とネットワーク遅延を切り分け
  • Tomcat を内蔵した Spring Boot アプリにも対応
Photo by 章亦春
  • Tomcat のレスポンス遅延を診断、遅いリクエストをピンポイントで捕捉
  • 選択的パケットキャプチャ:レスポンス時間・ステータス・パスでフィルタ
  • リクエスト単位で PCAP をダウンロード
  • サーバー側遅延とネットワーク遅延を切り分け
  • Tomcat を内蔵した Spring Boot アプリにも対応

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 アプリケーションプロファイリング対応
  • 自動サンプリングと専門家分析
  • パフォーマンスへの影響とオーバーヘッド
  • よくある質問

Perl プロセスの CPU 使用率が 13% のまま:off-CPU フレームグラフでブロッキング HTTP 呼び出しを特定

  • 症状:リクエストが殺到しても Perl プロセスの CPU 使用率が上がらない
  • OpenResty XRay の off-CPU フレームグラフでブロッキング Perl コードパスを特定
  • Insights ページの自動分析とレポート
  • FAQ
  • 症状:リクエストが殺到しても Perl プロセスの CPU 使用率が上がらない
  • OpenResty XRay の off-CPU フレームグラフでブロッキング Perl コードパスを特定
  • Insights ページの自動分析とレポート
  • FAQ

Perl アプリケーションの追跡時における OpenResty XRay のシステムパフォーマンスへの影響

  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM エージェントの比較
  • よくある質問
  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM エージェントの比較
  • よくある質問

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 について

Perl 高CPU使用率:フレームグラフで正規表現ホットスポットを特定(CPU 100%の原因追跡)

  • 問題: 高 CPU 使用率
  • OpenResty XRay のガイド付き分析機能を使用して最も CPU 使用率の高い Perl コードパスを特定
  • 自動分析とレポート
  • OpenResty XRay について
  • 問題: 高 CPU 使用率
  • OpenResty XRay のガイド付き分析機能を使用して最も CPU 使用率の高い Perl コードパスを特定
  • 自動分析とレポート
  • OpenResty XRay について

Rust プロセスのディスク I/O が高い原因の特定方法

  • ディスク I/O が高い Rust プロセスの特定
  • フレームグラフで Rust のディスク書き込みホットコードパスを追跡
  • 自動ディスク I/O 分析レポート
  • よくある質問
  • ディスク I/O が高い Rust プロセスの特定
  • フレームグラフで Rust のディスク書き込みホットコードパスを追跡
  • 自動ディスク I/O 分析レポート
  • よくある質問

Rust アプリケーションの追跡時における OpenResty XRay のシステムパフォーマンスへの影響

  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM Agentの比較
  • よくある質問
  • 分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?
  • 分析はスループットとレイテンシにどの程度影響するか?
  • OpenResty XRay と常駐型 APM Agentの比較
  • よくある質問

Rust CPU プロファイリング:OpenResty XRay で Sled の最もホットなコードパスを特定

  • 問題:Sled ベースのキャッシュサービスが 100% 超の CPU を消費
  • Guided Analysis による実行中の Rust プロセスのプロファイリング
  • Rust CPU フレームグラフの解読:最もホットなコードパス
  • 2 番目にホットなコードパス:get_inner と view_for_key
  • 自動生成される Rust CPU 分析レポート
  • よくある質問
  • 問題:Sled ベースのキャッシュサービスが 100% 超の CPU を消費
  • Guided Analysis による実行中の Rust プロセスのプロファイリング
  • Rust CPU フレームグラフの解読:最もホットなコードパス
  • 2 番目にホットなコードパス:get_inner と view_for_key
  • 自動生成される Rust CPU 分析レポート
  • よくある質問

C++ による C++ アプリケーションの動的トレーシング技術

  • 対象 C++ プログラムを設定
  • C++(または Y++)アナライザーの作成
  • 対象プログラムとアナライザーの実行
  • 複雑な C++ アプリケーションのサポート強化
  • デバッグシンボルについて
  • 結論
Photo by 章亦春
  • 対象 C++ プログラムを設定
  • C++(または Y++)アナライザーの作成
  • 対象プログラムとアナライザーの実行
  • 複雑な C++ アプリケーションのサポート強化
  • デバッグシンボルについて
  • 結論

OpenResty XRay による Core Dump の自動分析技術

  • クラッシュした OpenResty/Nginx worker の core dump ファイルの場所を特定する
  • OpenResty XRay で自動(ガイド付き)core dump 分析を開始する
  • クラッシュのシグナル、CPU レジスタ、C バックトレースを読み解く
  • Lua バックトレースからクラッシュした正確な行までたどる
  • オンラインの core dump に対する自動 Insights レポート
  • クラッシュした OpenResty/Nginx worker の core dump ファイルの場所を特定する
  • OpenResty XRay で自動(ガイド付き)core dump 分析を開始する
  • クラッシュのシグナル、CPU レジスタ、C バックトレースを読み解く
  • Lua バックトレースからクラッシュした正確な行までたどる
  • オンラインの core dump に対する自動 Insights レポート

Erlang 高 CPU 使用率:フレームグラフで特定した PCRE 正規表現のボトルネック

  • Erlang プロセスの 200% 超 CPU 使用率の観測
  • OpenResty XRay による Erlang CPU 使用率のプロファイリング
  • C レベル分析:erts_pcre_exec と PCRE バックトラッキング
  • BEAM VM における PCRE 正規表現バックトラッキングが高コストな理由
  • 自動監視とレポート
  • FAQ:Erlang 高 CPU 使用率
  • OpenResty XRay について
  • Erlang プロセスの 200% 超 CPU 使用率の観測
  • OpenResty XRay による Erlang CPU 使用率のプロファイリング
  • C レベル分析:erts_pcre_exec と PCRE バックトラッキング
  • BEAM VM における PCRE 正規表現バックトラッキングが高コストな理由
  • 自動監視とレポート
  • FAQ:Erlang 高 CPU 使用率
  • OpenResty XRay について

Nginx で No debugging symbols found?OpenResty XRay が自動で再構築

  • Nginx が strip され、デバッグシンボルが欠落していることの確認
  • 欠落した Nginx デバッグシンボルを自動再構築——再コンパイル不要
  • 継続的な分析:日次・週次の Insights レポート
  • よくある質問:nginx-dbg、再コンパイル、strip 済みバイナリの分析
  • Nginx が strip され、デバッグシンボルが欠落していることの確認
  • 欠落した Nginx デバッグシンボルを自動再構築——再コンパイル不要
  • 継続的な分析:日次・週次の Insights レポート
  • よくある質問:nginx-dbg、再コンパイル、strip 済みバイナリの分析

Envoy CPU プロファイリング:フレームグラフで C++ ホットパスを特定

  • シナリオ:Envoy プロセスの CPU 使用率が 90% 超
  • C++ フレームグラフによる Envoy CPU プロファイリング
  • 自動化レポートによる継続的 CPU 監視
  • OpenResty XRay について
  • FAQ:Envoy CPU プロファイリング
  • シナリオ:Envoy プロセスの CPU 使用率が 90% 超
  • C++ フレームグラフによる Envoy CPU プロファイリング
  • 自動化レポートによる継続的 CPU 監視
  • OpenResty XRay について
  • FAQ:Envoy CPU プロファイリング

llama.cpp の CPU 使用率:400% の CPU 消費を ggml のホットな関数まで追跡

  • llama.cpp を実行して 400% の CPU 使用率を観測
  • OpenResty XRay による llama.cpp の CPU 使用率のプロファイリング
  • 分析結果:最もホットな C++ コードパス
  • OpenResty XRay について
  • llama.cpp を実行して 400% の CPU 使用率を観測
  • OpenResty XRay による llama.cpp の CPU 使用率のプロファイリング
  • 分析結果:最もホットな C++ コードパス
  • OpenResty XRay について

Ylang実践編:コンテナトレース、スタック展開とCore Dump分析(第4回、全4回)

  • コンテナを透過的に横断するトレース機能
    • 効率的なスタックアンワインディング
    • 終了したプロセスの分析(core dumps)
    • 極めて低いトレーシングオーバーヘッド
    • 標準 Ylang ライブラリとツール
    • ネットワークフィルタリングと制御
    • Ylang コンパイラの実装
    • オペレーティングシステムのサポート
    • オープンソースコミュニティへの貢献
    • 結論
    • 謝辞
Photo by 章亦春
  • コンテナを透過的に横断するトレース機能
    • 効率的なスタックアンワインディング
    • 終了したプロセスの分析(core dumps)
    • 極めて低いトレーシングオーバーヘッド
    • 標準 Ylang ライブラリとツール
    • ネットワークフィルタリングと制御
    • Ylang コンパイラの実装
    • オペレーティングシステムのサポート
    • オープンソースコミュニティへの貢献
    • 結論
    • 謝辞

Ylang:正規表現、完全な制御フローと透過的デバッグシンボル処理(第3回、全4回)

  • Ylang の文法(前回の続き)
    • 文字列
    • 組み込み正規表現サポート
    • 完全な制御フロー機能のサポート
    • 浮動小数点数のサポート
    • オープンソースツールチェーンとの比較
  • 透過的なデバッグシンボル処理
    • デバッグシンボル:実行時のシステムオーバーヘッドなし
    • 集中管理されたパッケージデータベース
    • デバッグシンボルのファジーマッチング
Photo by 章亦春
  • Ylang の文法(前回の続き)
    • 文字列
    • 組み込み正規表現サポート
    • 完全な制御フロー機能のサポート
    • 浮動小数点数のサポート
    • オープンソースツールチェーンとの比較
  • 透過的なデバッグシンボル処理
    • デバッグシンボル:実行時のシステムオーバーヘッドなし
    • 集中管理されたパッケージデータベース
    • デバッグシンボルのファジーマッチング

OpenResty XRay を使用して Linux カーネルのトレースサブシステムにおける 2 つのバグを捕捉

  • ユーザー空間メモリ読み取り時のカーネルデッドロック
  • カーネル内の x86 ブレークポイント挿入におけるデータ競合
  • ユーザー空間メモリ読み取り時のカーネルデッドロック
  • カーネル内の x86 ブレークポイント挿入におけるデータ競合

Lua の CPU 使用率が高いとき:Nginx/OpenResty で最もホットな Lua コードパスを特定する

  • 症状:Nginx ワーカープロセスが CPU をほぼ 100% 使用
  • 「Guided Analysis」で最もホットな Lua コードパスを特定
  • Insights レポートで Lua CPU 使用率を自動監視
  • よくある質問
  • 症状:Nginx ワーカープロセスが CPU をほぼ 100% 使用
  • 「Guided Analysis」で最もホットな Lua コードパスを特定
  • Insights レポートで Lua CPU 使用率を自動監視
  • よくある質問

Kong プラグインの CPU 高騰:pcall に隠れた Lua 例外をフレームグラフで特定

  • 問題:トラフィックは低いのに Kong プラグインの CPU が高騰
  • OpenResty XRay のフレームグラフによる CPU ボトルネックの特定
  • 結果:Kong の CPU 使用率が 80% から 50% に低下
Photo by 章亦春
  • 問題:トラフィックは低いのに Kong プラグインの CPU が高騰
  • OpenResty XRay のフレームグラフによる CPU ボトルネックの特定
  • 結果:Kong の CPU 使用率が 80% から 50% に低下

Kong プラグインの CPU・メモリ使用量:最も消費するプラグインをオンラインで特定(OpenResty XRay)

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

Ylang: eBPF、SystemTap、GDB などのフレームワーク向け動的トレーシング言語(第1回、全4回)

  • 動的トレーシングとは
  • なぜ「Y」と名付けたのか
  • Ylang 入門
  • 動的トレーシングバックエンド:eBPF+、Stap+、GDB、ODB
  • なぜ動的トレーシングに統一されたフロントエンド言語が必要なのか
  • Ylang の構文:C との真の互換性
  • よくある質問
Photo by 章亦春
  • 動的トレーシングとは
  • なぜ「Y」と名付けたのか
  • Ylang 入門
  • 動的トレーシングバックエンド:eBPF+、Stap+、GDB、ODB
  • なぜ動的トレーシングに統一されたフロントエンド言語が必要なのか
  • Ylang の構文:C との真の互換性
  • よくある質問

遅延した TCP 接続のみのパケットキャプチャ:Nginx リクエストボディ読み取りの 200ms 遅延を追跡

  • 課題
  • 分析プロセス:遅延した TCP 接続のパケットキャプチャ
  • 完全自動化された分析
  • OpenResty XRay とは
Photo by 章亦春
  • 課題
  • 分析プロセス:遅延した TCP 接続のパケットキャプチャ
  • 完全自動化された分析
  • OpenResty XRay とは

リークした Lua テーブルを特定する:registry / _LOADED(package.loaded)参照パス · OpenResty XRay

  • LuaJIT のメモリ管理方法
  • OpenResty XRay のコマンドラインツール
  • Lua テーブルのリーク例
  • LuaJIT GC オブジェクト種別ごとのメモリ内訳
  • lj-gco-ref フレームグラフの読み方:registry、_LOADED、package.loaded
  • 完全自動の Lua メモリリーク分析
  • LuaJIT のメモリ管理方法
  • OpenResty XRay のコマンドラインツール
  • Lua テーブルのリーク例
  • LuaJIT GC オブジェクト種別ごとのメモリ内訳
  • lj-gco-ref フレームグラフの読み方:registry、_LOADED、package.loaded
  • 完全自動の Lua メモリリーク分析

YSQL 言語を使用した Nginx プロセスのリアルタイムリクエスト数カウント

  • run-ysql ツールのインストール方法
  • リアルタイムの総リクエスト数の統計
  • 特定のリクエストのフィルタリング
  • Web コンソールでの YSQL の使用
  • 真の非侵襲的トレーシング
Photo by 章亦春
  • run-ysql ツールのインストール方法
  • リアルタイムの総リクエスト数の統計
  • 特定のリクエストのフィルタリング
  • Web コンソールでの YSQL の使用
  • 真の非侵襲的トレーシング

Lua io.popen が Nginx イベントループをブロックする問題:スループット 150 倍改善の実例

  • 問題点:毎秒 130 リクエスト
  • OpenResty XRay によるブロッキング特定
  • io.popen のノンブロッキング代替
  • 結果:7 倍と 150 倍
  • よくある質問
Photo by Yichun Zhang
  • 問題点:毎秒 130 リクエスト
  • OpenResty XRay によるブロッキング特定
  • io.popen のノンブロッキング代替
  • 結果:7 倍と 150 倍
  • よくある質問

OpenResty または Nginx プロセスにおける読み込み済み Lua モジュールの一覧表示

  • システム環境
  • 読み込み済み Lua モジュールの名前
  • Web コンソールで直接実行
  • コンテナ内のアプリケーションのトレース
  • ツールの実装方法
  • ツールのオーバーヘッド
Photo by Yichun Zhang
  • システム環境
  • 読み込み済み Lua モジュールの名前
  • Web コンソールで直接実行
  • コンテナ内のアプリケーションのトレース
  • ツールの実装方法
  • ツールのオーバーヘッド

Nginx の CPU 使用率が高い:最も CPU を消費するリクエストを特定する

  • 前提条件と環境のセットアップ
  • どのリクエストのホスト名が最も CPU を消費するか特定する
  • どのリクエスト URI が最も CPU を消費するか特定する
  • さらに深く掘り下げる:なぜ一部のホスト名がより多くの CPU を使うのか
  • Web コンソールでツールを実行する
  • コンテナ内で Nginx の CPU 使用率をトレースする
  • CPU プロファイリングツールの仕組み
  • プロファイリングツールのオーバーヘッド
  • よくある質問
Photo by Yichun Zhang
  • 前提条件と環境のセットアップ
  • どのリクエストのホスト名が最も CPU を消費するか特定する
  • どのリクエスト URI が最も CPU を消費するか特定する
  • さらに深く掘り下げる:なぜ一部のホスト名がより多くの CPU を使うのか
  • Web コンソールでツールを実行する
  • コンテナ内で Nginx の CPU 使用率をトレースする
  • CPU プロファイリングツールの仕組み
  • プロファイリングツールのオーバーヘッド
  • よくある質問

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

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

Lua CPU フレームグラフ実践:本番環境で LuaJIT のボトルネックを特定

  • Lua CPU フレームグラフとは
  • 簡単な LuaJIT アプリで精度を検証
  • 本番環境での複雑な LuaJIT アプリのプロファイリング
  • サンプリングオーバーヘッド
  • 本番環境の安全性:ターゲットプロセスを 1 ビットも変更しない
  • 互換性
  • よくある質問
Photo by Guido Jansen
  • Lua CPU フレームグラフとは
  • 簡単な LuaJIT アプリで精度を検証
  • 本番環境での複雑な LuaJIT アプリのプロファイリング
  • サンプリングオーバーヘッド
  • 本番環境の安全性:ターゲットプロセスを 1 ビットも変更しない
  • 互換性
  • よくある質問

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