NGINX、OpenResty及其后端的跟踪与故障排除
Yichun Zhang,OpenResty Inc.创始人兼首席执行官
线上是否有一些nginx进程占用过多内存、CPU时间或磁盘I/O资源?线上是否会随机出现一些响应极慢、但在线下无法复现的请求?是否遇到过一些令人费解的NGINX错误日志消息,却不清楚实际原因?生产环境中是否会随机发生nginx进程崩溃和核心转储,令您困扰?
在NGINX Conf 2018的演讲中,Yichun探讨了NGINX和OpenResty在实际应用中的各种性能及其他行为问题,并介绍了如何利用动态跟踪和其他高级事后调试技术,在不中断生产服务的情况下快速在线定位问题原因。
Yichun介绍并比较了GDB、SystemTap和BCC/eBPF等多种开源调试框架的优缺点,并简要探讨了在生产环境中跟踪Docker容器所面临的独特挑战。随后,他介绍了全新的OpenResty Trace平台。该平台整合了这些调试技术,将易用性、可扩展性和可伸缩性提升到新的水平,尤其适用于微服务网格或CDN网络中的流量网关集群等分布式在线系统。他还通过示例说明了如何使用OpenResty Trace提供的通用调试语言编写自定义跟踪工具。
Yichun还通过实际示例,演示如何使用基于OpenResty Trace构建的高级跟踪工具,对NGINX核心以及采用LuaJIT的OpenResty核心进行跟踪。他还介绍了如何跟踪通过FastCGI、uWSGI或NGINX Unit在NGINX或OpenResty后端运行的其他传统后端服务,例如PHP、Python、Perl和Ruby。最后,他通过示例说明如何跟踪由NGINX、OpenResty或其后端应用访问的PostgreSQL、Memcached和Redis等数据服务。