Rastreamento e solução de problemas no NGINX, OpenResty e seus backends
Yichun Zhang, fundador e CEO da OpenResty Inc.
Há algum processo nginx em execução consumindo memória, tempo de CPU ou recursos de E/S de disco em excesso? Há requisições muito lentas que ocorrem aleatoriamente no ambiente de produção, mas não podem ser reproduzidas em um ambiente local? Você já viu mensagens misteriosas no log de erros do NGINX, mas não faz ideia das causas reais? Está enfrentando falhas aleatórias de processos nginx e despejos de memória no ambiente de produção?
Em sua sessão na NGINX Conf 2018, Yichun investiga diversos problemas reais de desempenho e outros problemas de comportamento no contexto do NGINX e do OpenResty, além de explicar como usar o rastreamento dinâmico e outras tecnologias avançadas de depuração post-mortem para identificar rapidamente as causas em ambiente online sem interromper os serviços de produção.
Yichun descreve e compara as vantagens e desvantagens de várias estruturas de depuração de código aberto, como GDB, SystemTap e BCC/eBPF, além de abordar brevemente os desafios específicos do rastreamento de contêineres Docker em produção. Em seguida, ele apresenta a nova plataforma OpenResty Trace, que unifica essas tecnologias de depuração e eleva sua usabilidade, escalabilidade e extensibilidade a um novo patamar, especialmente no contexto de sistemas on-line distribuídos, como uma malha de microsserviços ou clusters de gateways de tráfego, como os encontrados em uma rede CDN. Ele também apresenta exemplos de como criar ferramentas de rastreamento personalizadas usando as linguagens universais de depuração fornecidas pelo OpenResty Trace.
Yichun também usa exemplos reais para demonstrar o uso de ferramentas avançadas de rastreamento sobre o OpenResty Trace para o núcleo do NGINX e o núcleo do OpenResty com LuaJIT. Ele aborda o rastreamento de outros serviços de backend tradicionais executados por trás do NGINX ou do OpenResty via FastCGI, uWSGI ou NGINX Unit, como PHP, Python, Perl e Ruby. Ele conclui com exemplos de rastreamento de serviços de dados como PostgreSQL, Memcached e Redis, acessados pelo NGINX, pelo OpenResty ou por suas aplicações de backend.