OpenResty サービスにおける「見えないボトルネック」としての JSON

  • パフォーマンスの限界はどのレイヤーにあるのか
  • 一般的な「回避策」とその限界
  • なぜ「独自開発」や「独自カスタマイズ」は得策ではないのか
  • インフラストラクチャレベルの最適化:jit.cjson
  • なぜ公式(ベンダー)提供のソリューションが最適なのか
  • 極めて低い導入コスト
  • パフォーマンスの限界はどのレイヤーにあるのか
  • 一般的な「回避策」とその限界
  • なぜ「独自開発」や「独自カスタマイズ」は得策ではないのか
  • インフラストラクチャレベルの最適化:jit.cjson
  • なぜ公式(ベンダー)提供のソリューションが最適なのか
  • 極めて低い導入コスト

ビルド不要・Nginx ゲートウェイだけで実現する 120 MB/s のリアルタイム JS/CSS/HTML 圧縮

  • 「解決済み」が通用しない 3 つの現場
  • なぜ「正規表現で置換すればいい」では通用しないのか
  • Lua で正規表現を書いた、その先に待っていたもの
  • openresty-minifiers の設計:3 つの制約をどう同時に満たすか
  • 5 分で動かす:最小構成の nginx 設定例
  • 「解決済み」が通用しない 3 つの現場
  • なぜ「正規表現で置換すればいい」では通用しないのか
  • Lua で正規表現を書いた、その先に待っていたもの
  • openresty-minifiers の設計:3 つの制約をどう同時に満たすか
  • 5 分で動かす:最小構成の nginx 設定例

なぜ Kafka を API Gateway に統合するのは今でもこれほど難しいのか

  • 生産環境で頻繁に見られる 3 つの誤ったアーキテクチャパターン
  • lua-resty-kafka-fast とは
  • lua-resty-kafka と lua-resty-kafka-fast の比較
  • システムアーキテクチャにどのような変化をもたらすか
  • FAQ
  • 生産環境で頻繁に見られる 3 つの誤ったアーキテクチャパターン
  • lua-resty-kafka-fast とは
  • lua-resty-kafka と lua-resty-kafka-fast の比較
  • システムアーキテクチャにどのような変化をもたらすか
  • FAQ

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

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

「Nginx 再起動」という脆弱性:ダウンタイムゼロで実現する TLS 鍵ローテーションの最適解

  • Session Ticket Key 管理が見た目より難しい理由
  • lua-resty-tls-session が再起動なしで Session Ticket Key をローテーションする仕組み
  • 3 つのアプローチの比較
  • レイテンシ削減と稼働率向上の定量化
  • FAQ
  • Session Ticket Key 管理が見た目より難しい理由
  • lua-resty-tls-session が再起動なしで Session Ticket Key をローテーションする仕組み
  • 3 つのアプローチの比較
  • レイテンシ削減と稼働率向上の定量化
  • FAQ

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 ミリ秒
  • よくある質問

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

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

OpenResty Edge の Lua 拡張機能でイベント駆動型自動化を実現する方法:ゲートウェイサーバーのオフライン時に DNS からノードを自動削除

  • OpenResty Edge の Lua 拡張機能とは
  • ゲートウェイイベントに紐づく Lua 拡張機能の作成方法
  • ゲートウェイサーバーをオフラインにしてトリガー・検証する方法
  • OpenResty Edge について
  • OpenResty Edge の Lua 拡張機能とは
  • ゲートウェイイベントに紐づく Lua 拡張機能の作成方法
  • ゲートウェイサーバーをオフラインにしてトリガー・検証する方法
  • OpenResty Edge について

OpenResty Edge で Edgelang を使って Lua モジュールを作成・呼び出す方法

  • OpenResty Edge でグローバル Lua モジュールを作成する方法
  • Edgelang からページルールで Lua モジュールを呼び出す方法
  • curl で Lua モジュールの出力を検証する方法
  • OpenResty Edge でグローバル Lua モジュールを作成する方法
  • Edgelang からページルールで Lua モジュールを呼び出す方法
  • curl で Lua モジュールの出力を検証する方法

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 プラグインのメモリ使用状況
  • サーバーへの追加負荷
  • 今後の展開

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 コンソールで直接実行
  • コンテナ内のアプリケーションのトレース
  • ツールの実装方法
  • ツールのオーバーヘッド

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

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

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

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

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