← Back
Openresty-Xray

The Wonderland of Dynamic Tracing (Part 1 of 3)

  • Dynamic Tracing
  • What It Is
  • Too Good to be True?
  • How it Works
  • Still Having Doubts?
  • The Advantages of Dynamic Tracing
  • DTrace
  • SystemTap
  • DTrace and SystemTap
  • Applications of SystemTap in Production
Photo by Philip Brown
  • Dynamic Tracing
  • What It Is
  • Too Good to be True?
  • How it Works
  • Still Having Doubts?
  • The Advantages of Dynamic Tracing
  • DTrace
  • SystemTap
  • DTrace and SystemTap
  • Applications of SystemTap in Production

The Wonderland of Dynamic Tracing (Part 3 of 3)

  • Dynamic Tracing Support in Linux Kernels
  • Hardware Tracing
  • Analyze Remains of Dead Process
  • Traditional Debugging Technologies
  • A Messy World of Debugging
  • OpenResty XRay
Photo by L N
  • Dynamic Tracing Support in Linux Kernels
  • Hardware Tracing
  • Analyze Remains of Dead Process
  • Traditional Debugging Technologies
  • A Messy World of Debugging
  • OpenResty XRay

New FAQ Doc for OpenResty XRay

We recently prepared a new FAQ document for OpenResty XRay
Photo by Yichun Zhang
We recently prepared a new FAQ document for OpenResty XRay

How a Single "0" Took Down Bilibili — Every Server at 100% CPU, and Reboots Didn't Help

  • The Platform Behind Hundreds of Millions of Streams
  • The July 2021 Bilibili Outage: When Rebooting Doesn’t Help
  • Finding the Root Cause with CPU Flame Graphs
  • One Type Mismatch, Entire System Down
Photo by Yichun Zhang
  • The Platform Behind Hundreds of Millions of Streams
  • The July 2021 Bilibili Outage: When Rebooting Doesn’t Help
  • Finding the Root Cause with CPU Flame Graphs
  • One Type Mismatch, Entire System Down

Nginx Regex Performance: Find Slow Patterns with Dynamic Tracing

  • Prerequisites and Setup
  • Locate Slow Regex with CPU Flame Graphs
  • Performance After Regex Optimization
  • Limit PCRE Backtracking with lua_regex_match_limit
  • Non-Backtracking Engines: RE2 and OpenResty Regex
  • Lua Built-in Patterns as a Regex Alternative
  • Trace Regex Performance in Docker and Kubernetes
  • How the Dynamic-Tracing Tools Work
  • Tool Overhead: Zero Impact When Not Sampling
  • FAQ: Nginx Regex Performance
  • Prerequisites and Setup
  • Locate Slow Regex with CPU Flame Graphs
  • Performance After Regex Optimization
  • Limit PCRE Backtracking with lua_regex_match_limit
  • Non-Backtracking Engines: RE2 and OpenResty Regex
  • Lua Built-in Patterns as a Regex Alternative
  • Trace Regex Performance in Docker and Kubernetes
  • How the Dynamic-Tracing Tools Work
  • Tool Overhead: Zero Impact When Not Sampling
  • FAQ: Nginx Regex Performance

Listing Loaded Lua Modules in OpenResty or Nginx Processes

  • System Environment
  • Names of Loaded Lua Modules
  • Running Directly in the Web Console
  • Tracing Applications inside Containers
  • How The Tools are Implemented
  • The Overhead of the Tools
Photo by Yichun Zhang
  • System Environment
  • Names of Loaded Lua Modules
  • Running Directly in the Web Console
  • Tracing Applications inside Containers
  • How The Tools are Implemented
  • The Overhead of the Tools

Nginx High CPU Usage: Find Which Requests Consume the Most CPU

  • Prerequisites and Environment Setup
  • Find Which Request Hostname Uses the Most CPU
  • Find Which Request URI Uses the Most CPU
  • Digging Deeper: Why Some Hostnames Use More CPU
  • Running the Tools in the Web Console
  • Tracing Nginx CPU Usage Inside Containers
  • How the CPU Profiling Tools Work
  • The Overhead of the Profiling Tools
  • Frequently Asked Questions
Photo by Yichun Zhang
  • Prerequisites and Environment Setup
  • Find Which Request Hostname Uses the Most CPU
  • Find Which Request URI Uses the Most CPU
  • Digging Deeper: Why Some Hostnames Use More CPU
  • Running the Tools in the Web Console
  • Tracing Nginx CPU Usage Inside Containers
  • How the CPU Profiling Tools Work
  • The Overhead of the Profiling Tools
  • Frequently Asked Questions

Ylang in Production: Container Tracing, Stack Unwinding & Core Dumps (Series Part 4)

  • Transparent Container Tracing
  • Efficient Stack Unwinding
  • Analyzing Dead Processes (Core Dumps)
  • Very Low Tracing Overhead
  • Standard Ylang Libraries & Tools
  • Network Filtering & Control
  • The Ylang Compiler’s Implementation
  • Operating System Support
  • Contributions to Open-Source Communities
Photo by Yichun Zhang
  • Transparent Container Tracing
  • Efficient Stack Unwinding
  • Analyzing Dead Processes (Core Dumps)
  • Very Low Tracing Overhead
  • Standard Ylang Libraries & Tools
  • Network Filtering & Control
  • The Ylang Compiler’s Implementation
  • Operating System Support
  • Contributions to Open-Source Communities

Ylang: Regex, Full Control Flow & Transparent Debug Symbol Handling (Series Part 3)

  • The Language Syntax (Continued)
    • String Literals
    • Built-in Regex Support
    • Full Control-Flow Support
    • Floating-Point Number Support
    • Compared to Open-Source Toolchains
  • Transparent Debug Symbol Handling
    • Debug Symbols: No Runtime Overhead
    • Centralized Package Database
    • Fuzzy Matching Debug Symbols
Photo by Yichun Zhang
  • The Language Syntax (Continued)
    • String Literals
    • Built-in Regex Support
    • Full Control-Flow Support
    • Floating-Point Number Support
    • Compared to Open-Source Toolchains
  • Transparent Debug Symbol Handling
    • Debug Symbols: No Runtime Overhead
    • Centralized Package Database
    • Fuzzy Matching Debug Symbols

Ylang: A Dynamic Tracing Language for eBPF, SystemTap, GDB, and More (Part 1 of 4)

  • What is Dynamic Tracing
  • Why the “Y” Name
  • Getting Started with Ylang
  • Dynamic Tracing Backends: eBPF+, Stap+, GDB, and ODB
  • Why a Unified Frontend Language for Dynamic Tracing
  • The Ylang Syntax: Genuinely C-Compatible
  • Frequently Asked Questions
Photo by Yichun Zhang
  • What is Dynamic Tracing
  • Why the “Y” Name
  • Getting Started with Ylang
  • Dynamic Tracing Backends: eBPF+, Stap+, GDB, and ODB
  • Why a Unified Frontend Language for Dynamic Tracing
  • The Ylang Syntax: Genuinely C-Compatible
  • Frequently Asked Questions

Lua CPU Flame Graphs: Profiling LuaJIT in Production

  • What Is a Lua CPU Flame Graph
  • Profiling simple LuaJIT apps: verifying accuracy
  • Profiling complex LuaJIT apps in production
  • Sampling Overhead
  • Production safety: not a single bit changed
  • Compatibility
  • FAQ
Photo by Guido Jansen
  • What Is a Lua CPU Flame Graph
  • Profiling simple LuaJIT apps: verifying accuracy
  • Profiling complex LuaJIT apps in production
  • Sampling Overhead
  • Production safety: not a single bit changed
  • Compatibility
  • FAQ

LuaJIT GC64 Mode: Removing the 2GB Memory Limit

  • The Old Memory Limit
    • When Hitting The Memory Limit
    • The Memory Limit Is Per Process
    • GC-Managed Memory
    • Memory Allocated Outside GC
    • Extending The x64 Mode to The 4 GB Limit
  • The New GC64 Mode
    • How to Enable The GC64 Mode
    • Performance Impact
    • Debugging and Profiling Tool Chains
  • The Old Memory Limit
    • When Hitting The Memory Limit
    • The Memory Limit Is Per Process
    • GC-Managed Memory
    • Memory Allocated Outside GC
    • Extending The x64 Mode to The 4 GB Limit
  • The New GC64 Mode
    • How to Enable The GC64 Mode
    • Performance Impact
    • Debugging and Profiling Tool Chains
Contact us

Love to hear from you, Get in touch 👋

Message was sent successfully!

Our Team will get back to you within 24 hours.
x