← Back
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 の使用
  • 真の非侵襲的トレーシング

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
お問い合わせ

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

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

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