Rastreo y resolución de problemas de NGINX, OpenResty y sus backends
Yichun Zhang, fundador y CEO de OpenResty Inc.
¿Tiene algún proceso nginx en producción que consuma demasiada memoria, tiempo de CPU o recursos de E/S de disco? ¿Hay solicitudes muy lentas que se producen de forma aleatoria en producción, pero que no se pueden reproducir en un entorno local? ¿Ha visto mensajes misteriosos en el registro de errores de NGINX, pero no tiene ninguna pista sobre sus causas reales? ¿Le preocupan los fallos aleatorios de algún proceso nginx y los volcados de memoria en producción?
En su sesión en la NGINX Conf 2018, Yichun analiza diversos problemas reales de rendimiento y otros relacionados con el comportamiento en el contexto de NGINX y OpenResty, y explica cómo utilizar el rastreo dinámico y otras tecnologías avanzadas de depuración post mortem para identificar rápidamente las causas en línea sin interrumpir los servicios de producción.
Yichun describe y compara las ventajas y desventajas de diversos entornos de depuración de código abierto, como GDB, SystemTap y BCC/eBPF, y comenta brevemente los retos específicos que plantea el rastreo de contenedores Docker en producción. A continuación, presenta la nueva plataforma OpenResty Trace, que unifica estas tecnologías de depuración y lleva su facilidad de uso, escalabilidad y extensibilidad a un nuevo nivel, especialmente en el contexto de sistemas distribuidos en línea, como una malla de microservicios o clústeres de puertas de enlace de tráfico, como los de una red CDN. También incluye ejemplos de cómo crear herramientas de rastreo personalizadas mediante los lenguajes universales de depuración que ofrece OpenResty Trace.
Yichun también utiliza ejemplos reales para demostrar el uso de herramientas avanzadas de rastreo basadas en OpenResty Trace para el núcleo de NGINX y el de OpenResty con LuaJIT. Asimismo, aborda el rastreo de otros servicios backend tradicionales que se ejecutan detrás de NGINX u OpenResty mediante FastCGI, uWSGI o NGINX Unit, como PHP, Python, Perl y Ruby. Para concluir, muestra ejemplos de rastreo de servicios de datos como PostgreSQL, Memcached y Redis a los que acceden NGINX, OpenResty o sus aplicaciones backend.