Ablaufverfolgung und Fehlerbehebung bei NGINX, OpenResty und deren Backends

Yichun Zhang, Gründer und CEO von OpenResty Inc.

Verbrauchen einige Online- nginx- Prozesse zu viel Speicher, CPU-Zeit oder Festplatten-E/A-Ressourcen? Haben Sie einige sehr langsame Anfragen, die zufällig online auftreten, aber offline nicht reproduziert werden können? Sie haben einige mysteriöse NGINX-Fehlerprotokollmeldungen gesehen, aber keine Ahnung von den tatsächlichen Ursachen? Ärgern Sie sich über einige zufällige Abstürze von Nginx -Prozessen und Core Dumps in der Produktion?

In seiner Sitzung auf der NGINX Conf 2018 untersucht Yichun verschiedene reale Leistungs- und andere Verhaltensprobleme im Zusammenhang mit NGINX und OpenResty und erklärt, wie man dynamisches Tracing und andere erweiterte Postmortem-Debugging-Technologien nutzt, um die Ursachen schnell online zu ermitteln, ohne die Produktionsdienste zu unterbrechen.

Yichun beschreibt und vergleicht die Vor- und Nachteile verschiedener Open-Source-Debugging-Frameworks wie GDB, SystemTap und BCC/eBPF und geht kurz auf die besonderen Herausforderungen bei der Verfolgung von Docker-Containern in der Produktion ein. Anschließend stellt er die neue OpenResty Trace-Plattform vor, die diese Debugging-Technologien vereinheitlicht und ihre Benutzerfreundlichkeit, Skalierbarkeit und Erweiterbarkeit auf ein neues Niveau hebt, insbesondere im Kontext verteilter Online-Systeme wie einem Microservices-Mesh oder Traffic-Gateway-Clustern wie in einem CDN-Netzwerk. Er enthält Beispiele zum Schreiben benutzerdefinierter Tracing-Tools mithilfe der universellen Debugging-Sprachen von OpenResty Trace.

Yichun verwendet außerdem reale Beispiele, um die Verwendung erweiterter Tracing-Tools auf OpenResty Trace für den NGINX-Kern und den OpenResty-Kern mit LuaJIT zu demonstrieren. Er befasst sich mit der Verfolgung anderer herkömmlicher Backend-Dienste, die hinter NGINX oder OpenResty über FastCGI, uWSGI oder NGINX Unit ausgeführt werden, wie etwa PHP, Python, Perl und Ruby. Er schließt mit Beispielen für die Ablaufverfolgung von Datendiensten wie PostgreSQL, Memcached und Redis, auf die über NGINX, OpenResty oder deren Backend-Anwendungen zugegriffen wird.

Nächste Schritte