Featured Articles

Photo by Yichun Zhang

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

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

Binary Vulnerability Scanning: Catch Backported Patches, Cut False Positives

Binary Vulnerability Scanning: Catch Backported Patches, Cut False Positives

Binary Vulnerability Scanning: Catch Backported Patches, Cut False Positives

Introduction to OpenResty XRay

Introduction to OpenResty XRay

Introduction to OpenResty XRay

Nginx Reverse Proxy QPS Dropped 15x: A Missing upstream keepalive and an -O0 Debug Build

Nginx Reverse Proxy QPS Dropped 15x: A Missing upstream keepalive and an -O0 Debug Build

Nginx Reverse Proxy QPS Dropped 15x: A Missing upstream keepalive and an -O0 Debug Build

Non-Invasive Java Profiler: Capture Method Arguments in Production Without a Java Agent

Non-Invasive Java Profiler: Capture Method Arguments in Production Without a Java Agent

Non-Invasive Java Profiler: Capture Method Arguments in Production Without a Java Agent

Photo by Philip Brown

The Wonderland of Dynamic Tracing (Part 1 of 3)

The Wonderland of Dynamic Tracing (Part 1 of 3)

Photo by Jose G. Ortega Castro

How OpenResty and Nginx Shared Memory Zones Consume RAM

How OpenResty and Nginx Shared Memory Zones Consume RAM

Photo by Harrison Broadbent

Nginx Memory Usage Explained: Where the RAM Actually Goes

Nginx Memory Usage Explained: Where the RAM Actually Goes

OpenResty XRay reduce your CPU usage up to  90%
OpenResty XRay reduce your CPU usage up to 90%
Request free trial

Latest Articles

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

Configure HTTP Basic Auth in OpenResty Edge — No Server Reload or Restart

  • Configure the HTTP basic auth credentials for applications
    • Add a basic auth user group
    • Enable basic auth with a page rule
    • Test basic auth in a browser and with curl
  • Configure global HTTP basic auth across all applications
    • Add a global basic auth user group
    • Configure the global auth for application
Photo by Yichun Zhang
  • Configure the HTTP basic auth credentials for applications
    • Add a basic auth user group
    • Enable basic auth with a page rule
    • Test basic auth in a browser and with curl
  • Configure global HTTP basic auth across all applications
    • Add a global basic auth user group
    • Configure the global auth for application

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

How to Release and Roll Back Gateway Config in OpenResty Edge: Version Control Without Reload

  • Create a page rule for the sample application
  • Release the page rule to all gateway clusters
  • Test the released config with curl
  • Modify the page rule
  • Release the modified config
  • Test the modified config
  • Revert the latest config release
  • Test the reverted config
  • Roll back to any earlier release
Photo by Yichun Zhang
  • Create a page rule for the sample application
  • Release the page rule to all gateway clusters
  • Test the released config with curl
  • Modify the page rule
  • Release the modified config
  • Test the modified config
  • Revert the latest config release
  • Test the reverted config
  • Roll back to any earlier release

Redirect Based on Browser Language in OpenResty Edge: Accept-Language Page Rule

  • Redirect based on browser language with an Accept-Language page rule
  • Match the root URI and the Accept-Language header with a regex
  • Test the French redirect with curl
  • Add a fallback rule that redirects other languages to English
  • Ship changes to every gateway node with no Nginx reload
Photo by Yichun Zhang
  • Redirect based on browser language with an Accept-Language page rule
  • Match the root URI and the Accept-Language header with a regex
  • Test the French redirect with curl
  • Add a fallback rule that redirects other languages to English
  • Ship changes to every gateway node with no Nginx reload

OpenResty 1.19.9.1 released

  • Version highlights
  • Full Changelog
  • Alpine 3.14 official release
  • Version highlights
  • Full Changelog
  • Alpine 3.14 official release
Contact us

OpenResty open-source community workspace

Please join us here and share your thoughts and questions with us, we can't wait to see you there!


limited time offer

Request TRIAL today and receive a diagnostic REPORT
Learn more

Love to hear from you, Get in touch 👋

Message was sent successfully!

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