Traçage et dépannage de NGINX, d’OpenResty et de leurs backends

Yichun Zhang, fondateur et PDG d’OpenResty Inc.

Certains processus nginx en ligne consomment trop de mémoire, de temps processeur ou de ressources d’E/S disque ? Certaines requêtes sont parfois très lentes en ligne, sans que le problème puisse être reproduit hors ligne ? Vous avez vu d’énigmatiques messages dans le journal d’erreurs de NGINX, mais n’avez aucune idée de leurs causes réelles ? Vous êtes confronté à des plantages aléatoires de processus nginx et à des vidages mémoire en production ?

Lors de sa session à la NGINX Conf 2018, Yichun examine divers problèmes réels de performances et de comportement dans le contexte de NGINX et d’OpenResty, et explique comment utiliser le traçage dynamique et d’autres technologies avancées de débogage post-mortem pour en déterminer rapidement les causes en ligne, sans perturber les services de production.

Yichun décrit et compare les avantages et les inconvénients de différents frameworks de débogage open source tels que GDB, SystemTap et BCC/eBPF, et aborde brièvement les difficultés particulières liées au traçage des conteneurs Docker en production. Il présente ensuite la nouvelle plateforme OpenResty Trace, qui unifie ces technologies de débogage et porte leur facilité d’utilisation, leur évolutivité et leur extensibilité à un niveau supérieur, notamment dans le contexte de systèmes distribués en ligne tels qu’un maillage de microservices ou des clusters de passerelles de trafic comme dans un réseau CDN. Il donne également des exemples de création d’outils de traçage personnalisés à l’aide des langages de débogage universels fournis par OpenResty Trace.

Yichun s’appuie également sur des exemples concrets pour montrer comment utiliser les outils de traçage avancés d’OpenResty Trace avec le cœur de NGINX et celui d’OpenResty avec LuaJIT. Il aborde le traçage d’autres services backend traditionnels exécutés derrière NGINX ou OpenResty via FastCGI, uWSGI ou NGINX Unit, tels que PHP, Python, Perl et Ruby. Il conclut par des exemples de traçage de services de données comme PostgreSQL, Memcached et Redis, auxquels accèdent NGINX, OpenResty ou leurs applications backend.