Founder & CEO of OpenResty Inc., Creator of OpenResty, Meditator

San Francisco Bay Area
Joined February 2010
Yichun Zhang (agentzh) retweeted
In performance troubleshooting, we always hit the same bottleneck: the issue itself isn't always complex, but few people can interpret low-level runtime data. When expert bandwidth is tight, issues just stack up. In v26.9.1, we’re delegating this heavy lifting to the AI Assistant. 1. AI executes, evidence leads Describe what you see in plain English. The AI Assistant autonomously plans the analysis, executes tasks, and delivers key findings via chat. Every insight is grounded in real-time data captured by OpenResty XRay from live processes—no LLM hallucinations or guessing games. This release adds time-series metrics and smarter report analysis, allowing it to easily track down complex, multi-stage issues over time. Senior engineers no longer need to babysit every incident, empowering junior devs to drive root-cause analysis independently. 2. New Java runtime analyzer covering 9 key scenarios Core systems in finance, cloud-native microservices, autonomous driving, and gaming often rely on Java. Performance issues are usually buried deep in GC, safepoints, lock contention, and thread scheduling—invisible to plain logs or basic APM. We now cover: memory allocation, class loading, GC & safepoint pauses, JIT compilation, lock waiting, network I/O, exceptions, thread activity, plus improved off-CPU profiling for accurate block-time stats. Full support for JDK 8, 11, 17, 21, and ARM64 architecture. 3. Zero code changes—our non-negotiable rule If it requires code modification, manual instrumentation, or service restarts, it doesn't belong in production. OpenResty XRay leverages dynamic tracing to analyze live applications on the fly—zero code edits, zero restarts, and zero source code access required. With near-zero overhead, it's 100% safe for production. Both the AI Assistant and the new Java analyzer strictly follow this rule: drop it straight into your running clusters. 4. Diagnose from anywhere Troubleshooting shouldn't keep you chained to your desk. The AI Assistant now supports mobile, so you can review diagnostic sessions, share insights with your team, or ask follow-up questions right from your phone. openresty.com/en/xray/releas… #OpenRestyXRay #DynamicTracing #eBPF
1
1
238
Yichun Zhang (agentzh) retweeted
Coding agents like Codex, Claude Code, and Cursor can read and edit your code, but for performance work they're missing a key piece: what your program actually does at runtime. If you already use OpenResty XRay, our new Agent Skill fills that gap. The agent pulls XRay's dynamic tracing data on its own, maps flame graph hotspots straight to source lines, and runs a full profile → fix → re-profile loop. We tried it on an edge service under production-like conditions. Starting with issues like redundant JSON serialization and regexes being recompiled on every request, every refactor was guided by real XRay profiling data. Throughput went from 336 RPS to nearly 30,000 RPS, close to 90x. The Skill calls the XRay API automatically and works with any tech stack, not just OpenResty/Nginx. Full write-up, including where this approach fits best: blog.openresty.com/en/xray-a…
2
2
6
422
RT @OpenResty: We just used OpenResty Inc's internal proprietary software pojects' hardest real algorithm design & impl problems to form a…
1
131
Yichun Zhang (agentzh) retweeted
Our OpenResty XRay dynamic tracing product's Java analyzers finally support Azul's Zulu JDK! This includes Java-land CPU/off-CPU/diskIO flame graphs, latency analysis and smart packet capture, dynamic probes for Java method entry points, and more. We have a cryptocurrency exchange client who needs this explicitly. OpenJDK, Oracle JDK, and Zulu JDK—all three JVM variants are now fully supported. Depending on our enterprise customers' actual needs, we'll consider supporting other variants like IBM JDK and Microsoft's JDK later. #DynamicTracing #Java #JVM #ZuluJDK #Azul #eBPF
1
2
745
Yichun Zhang (agentzh) retweeted
Our OpenResty XRay, a dynamic-tracing product, transforms black-box production systems into white-box ones. Many issues can be observed and captured before they escalate into harmful problems. This continuous insight and control over production systems is what's most crucial. Offline simulated traffic and testing methods often have limited coverage. No matter how much effort is invested in offline simulation, gaps will always exist. Additionally, many of our customers prefer using OpenResty XRay for white-box analysis even in offline environments; regardless of the environment, white-box is much more convenient than black-box. You can't keep adding monitoring metrics and debug logs every time, can you? ;) Our ultimate goal is to help customers quickly understand their legacy systems (or "sh*t mountain systems") and improve them efficiently at low cost rather than just being a tool for solving production issues. "Turning sh*t into gold" - that's what makes this truly interesting and valuable.
1
1
752
Yichun Zhang (agentzh) retweeted
OpenResty XRay now supports setting dynamic probes at any #Java function entry point! This feature has wide applications - for example, we've implemented real-time latency statistics for requests within Tomcat servers based on this feature, and integrated it with our online intelligent packet capture analyzer. It doesn't depend on any configuration of the target process or log files. It supports both interpreted and JIT-compiled Java methods. It's still based on 100% non-intrusive dynamic tracing technology, with negligible performance overhead. It doesn't rely on bytecode injection or machine code injection, doesn't depend on JVM Agent mechanism, and is completely read-only for the JVM target process - the target process doesn't even need to restart. It supports both the latest Linux kernels and old Red Hat 7's 3.10 kernel. Since this feature is very new, it currently only supports OpenJDK, but will soon support Oracle JDK. In the near future, it will definitely support more variants like Zulu JDK, IBM JDK, Azul JDK, and others. Support for dynamic probes at Java function exit points will be added later. #JVM #java #DynamicTracing #eBPF
2
3
722
Yichun Zhang (agentzh) retweeted
🔍 Deep dive into Java application analysis with OpenResty XRay! See it in our new blog post: blog.openresty.com/en/java-a… Key features: • Zero-modification profiling using eBPF/Stap+/GDB/etc • Precise CPU hotspot detection to the Java source line level. • Off-CPU blocking analysis • Disk I/O tracing • No Agent or Safepoints in JVM. • Support for unmodified OpenJDK 8/11/17 Will add support for commercial JVMs like Oracle JDK and Zulu JDK as well. Stay tuned! #Java #eBPF #Performance #Observability
2
1
3
1,459
Yichun Zhang (agentzh) retweeted
Thanks @kong, the API gateway company, for making a donation to OpenResty lately! Many years ago, Kong switched from NodeJS to OpenResty and saw dramatic improvement in performance, "more than times faster." #Kong #OpenResty #NodeJS
2
1
3
8,297
Yichun Zhang (agentzh) retweeted
🚀 OpenResty 1.27.1.1 is out now! Major updates include: • Nginx core upgraded to 1.27.1 • LuaJIT updated to 2.1-20240815 • OpenSSL upgraded to 3.0.15 • PCRE upgraded to 10.42 • New features in lua-nginx-module and stream-lua-nginx-module • Performance optimizations in lua-resty-redis Full changelog: openresty.org/en/changelog-1… Download: openresty.org/en/download.ht… #OpenResty #WebServer #Nginx #LuaJIT
2
1
3
1,268
Yichun Zhang (agentzh) retweeted
#Ylang is our universal dynamic tracing language that is compatible with C. It is employed in the OpenResty XRay product, which includes a Web #IDE. This IDE allows users to use Ylang for writing and running various dynamic tracing analysis tools. For instance, a demonstration screenshot shows the use of Ylang to create a custom dynamic tracing tool. This tool places a dynamic probe on the `ngx_http_finalize_request` function of #Nginx, printing information such as the URI, URI parameters, and response status codes of up to five requests when the probe is triggered. The screenshot displays the entered Ylang source code (seen in the top-left editing box), the configuration of the application being traced (top-right), and the output after running it online (in the black box at the bottom-left). Ylang can be executed through various backends, including eBPF+, making it suitable for online production environments. The target application being traced does not require any modifications or restarts, ensuring a 100% non-intrusive process. Compared to other open-source dynamic tracing languages like #BCC, #eBPF C, #bpftrace, D language of #dtrace, #systemtap's scripting language, and #gdb python, Ylang is significantly more concise and powerful. For more details about Ylang, refer to a series of articles I previously published: blog.openresty.com/en/ylang-…. #eBPF
1
1
892
Yichun Zhang (agentzh) retweeted
We’ve used #eBPF/#XDP to implement fully functioning #DNS authoritative servers! It's part of our @OpenResty #DDoS product. We made our eBPF programs return DNS replies directly. Achieving 8M+ PPS on a single desktop Linux machine ;) Supporting older kernels like RHEL 8's 4.18 kernels.
1
1
7
1,389
Yichun Zhang (agentzh) retweeted
OpenResty Inc. is excited to announce the recent launch of the Japanese version of our official website: openresty.com/jp/ Since our inception, we have been committed to internationalization and globalization. We extend our heartfelt thanks to our corporate users around the world for their strong support over the years! #japaneseworldwide
2
600
Yichun Zhang (agentzh) retweeted
Replying to @Sheepolution
Got into Lua with @OpenResty but your Tutorials with Love2D made me love it and reminded me the joy of coding. Can't thank you enough.
2
2
Yichun Zhang (agentzh) retweeted
We have recently compiled a newsletter for the OpenResty Edge distributed gateway and private CDN software products. You can read it here: openresty.com/en/news-edge-2…. This newsletter summarizes the latest articles and video tutorials published about this product. #K8s #DistributedGateway #WAF #PrivateCDN
1
621
RT @OpenResty: We recently released version 23.12.9 of the OpenResty XRay product. The release announcement can be found here: https://xitter.cf/t.co…
1
2
Yichun Zhang (agentzh) retweeted
We published a new video tutorial: youtu.be/HyrI2p5fE1M. It demonstrates how to install OpenResty XRay's Agent service on Ubuntu. In essence, It only takes one command to install it. This is an independent daemon process that can automatically detect and analyze all kinds of applications on the current system, whether they are containerized or not, such as OpenResty/Nginx, Lua, Python, PHP, Perl, Redis, Go, Rust, C/C++, Erlang, and so on. The target applications and containers do not need any modification or cooperation at all. Our Agent also supports installing our container image through #K8s or #docker, which we will demonstrate in a future video. Of course, we also support other distributions through rpm/deb packages. #ebpf #DynamicTracing #profiling #OnlineTroubleshooting
1
1
689
Yichun Zhang (agentzh) retweeted
We have published a new video tutorial: youtu.be/5WrUqkhzsXo. It demonstrates how to create new page rules through the web interface of OpenResty Edge to dynamically add new custom HTTP response #headers to the gateway. OpenResty Edge is a distributed traffic management system that we provide, which can be used for building enterprise traffic entrances, #K8s cluster complex traffic management, and private CDN networks. #privateCDN #gateway Text version: blog.openresty.com/en/edge-r…
1
1
674
RT @OpenResty: GSLB (Global Server Load Balancing) can use DNS dynamic resolution to automatically redistribute traffic to other nearby ser…
1
2
Yichun Zhang (agentzh) retweeted
This is a simple example of writing a dynamic tracing analyzer for an arbitrary #Go target program using the C language style #Ylang language. Here, we directly use the web #IDE of OpenResty XRay to edit and run the user-defined Ylang analyzer in real time and then view the results. We also mainly use Ylang to write analyzers for different technical stacks. The full demo video: youtu.be/WUdzsp9WMcU #golang
2
2
771
Yichun Zhang (agentzh) retweeted
We published a new video tutorial: youtu.be/WUdzsp9WMcU It demonstrates how to write a simple Ylang analyzer, dynamically tracing any #Go program process. This custom analyzer will add a dynamic probe at a specified #golang function entry and then print out the value of a map type Go variable. Thanks to our dynamic tracing technology, these analyzers can work in a true non-invasive way. This way, we can minimize the performance overhead without changing the target Go programs or processes. The dynamic tracing analyzer in Ylang here is compiled into multiple different backends, such as eBPF+, Stap+, and GDB Python, for different analysis scenarios. #ebpf Ylang is a universal dynamic tracing language that we designed and implemented and is compatible with C language. For details, please see the series of introduction articles I wrote before: blog.openresty.com/en/ylang-… Text version of this tutorial: blog.openresty.com/en/ylang-…
1
1
6
1,827