Home / Aplicativo móvel / Como medimos o tempo de resposta do Node.js

Como medimos o tempo de resposta do Node.js

Como medimos o tempo de resposta do Node.js

Compreender e medir os tempos de HTTP é como ter um superpoder no desenvolvimento web. É como ter uma habilidade especial que permite ver como os computadores se comunicam entre si, seja do seu dispositivo para um servidor ou entre servidores. Ele ajuda você a encontrar e corrigir problemas que tornam seus sites ou aplicativos lentos. Neste artigo, descobriremos como melhorar o tempo de resposta HTTP em Node.js para sites e aplicativos mais rápidos.

Descompactando o básico

Antes de nos aprofundarmos nos tempos de HTTP, vamos aprender alguns princípios básicos para estabelecer as bases para um entendimento adequado.

IP (protocolo de Internet):

A espinha dorsal da comunicação de rede, o IP lida com endereçamento e roteamento. Ele garante a entrega de pacotes de dados dos hosts de origem ao destino em uma ou mais redes IP.

DNS (servidores de nomes de domínio):

Este sistema de nomenclatura hierárquico traduz nomes de host legíveis por humanos, cruciais para aplicações webem endereços IP legíveis por máquina.

TCP (protocolo de controle de transmissão):

Uma regra que ajuda a configurar e manter conversas entre programas de computador em uma rede. Ele garante entrega de dados confiável, ordenada e com verificação de erros entre hosts em uma rede IP.

SSL/TLS (Segurança da Camada de Transporte):

Protocolos criptográficos que fornecem segurança de comunicação em uma rede. SSL, uma versão mais antiga, abriu caminho para o TLS. Ambos usam certificados para estabelecer conexões seguras, sendo o TLS a escolha mais moderna e segura.

Pesquisa de DNS:

Tempo gasto na resolução de nomes de domínio em endereços IP. Cada novo domínio aciona uma viagem completa para pesquisa de DNS. Nenhuma pesquisa é necessária se o destino já for um endereço IP.

Conexão TCP:

A duração para estabelecer uma conexão TCP entre hosts de origem e destino. Isso envolve um processo de handshake de várias etapas, gerenciado pelo sistema operacional. Se a conexão TCP não puder ser estabelecida, o tempo limite de todo o sistema operacional prevalecerá.

Aperto de mão TLS:

Tempo dedicado para completar um handshake TLS. Este processo envolve a troca de autenticação e chaves para estabelecer ou retomar sessões seguras. Observe que um handshake TLS não ocorre com solicitações não HTTPS.

Tempo até o primeiro byte (TTFB):

O tempo gasto aguardando a resposta inicial. Essa duração encapsula a latência de uma viagem de ida e volta ao servidor, juntamente com o tempo que o servidor leva para processar a solicitação e entregar a resposta.

Transferência de conteúdo:

O tempo alocado para receber os dados de resposta. A duração é influenciada pelo tamanho dos dados de resposta e pela largura de banda de rede disponível.

Como os tempos HTTP ajudam na identificação de gargalos?

Por exemplo, se a pesquisa de DNS demorar mais do que o previsto, o problema pode estar relacionado ao seu provedor de DNS ou às configurações de cache. E se o tempo até o primeiro byte for prolongado, você poderá examinar rapidamente a latência entre os endpoints e avaliar a carga atual do servidor.

Além disso, a transferência de conteúdo atrasada pode resultar de um corpo de resposta ineficiente, como a transmissão excessiva de dados (propriedades JSON não utilizadas) ou devido a uma conexão lenta.

Medindo tempos HTTP em Node.js: revelando o código

Para verificar os tempos de HTTP no Node.js, devemos ouvir solicitações, respostas e eventos de soquete específicos. Aqui está um trecho de código rápido que demonstra como fazer isso em Node.js; este exemplo concentra-se apenas nos tempos.

Código de exemplo para Pesquisa de DNS

// Verifica se ocorreu a pesquisa de DNS (não um endereço IP)

const dnsLookup = dnsLookupAt! == indefinido? getDuration(startAt, dnsLookupAt): indefinido;

Você pode usar o seguinte código para verificar o Conexão TCP

const tcpConnection = getDuration(dnsLookupAt || startAt, tcpConnectionAt);

O Aperto de mão TLS só funciona com protocolo https

// Verifica se ocorreu o handshake TLS (HTTPS)

const tlsHandshake = tlsHandshakeAt!== indefinido? getDuration(tcpConnectionAt, tlsHandshakeAt): indefinido;

Após o handshake TLS, esperamos que o servidor envie o Primeiro Byte

const firstByte = getDuration(tlsHandshakeAt || tcpConnectionAt, firstByteAt);

Após o primeiro byte Transferência de conteúdo começa

const contentTransfer = getDuration(firstByteAt, endAt);

Agora que aprendemos como medir os tempos HTTP com o Node, vamos dar uma olhada em algumas das ferramentas disponíveis. Essas ferramentas podem ser valiosas para compreender suas solicitações HTTP.

Módulo de solicitação

O módulo de solicitação amplamente utilizado vem equipado com um recurso conveniente para medir tempos HTTP. Para ativar este recurso, use a propriedade time.

Rastreamento Distribuído

Você pode usar a técnica de rastreamento distribuído e exibir visualmente os tempos de HTTP em uma linha do tempo. Esta abordagem oferece uma visão holística dos processos em segundo plano, revelando o custo real da construção de sistemas distribuídos.

Você pode usar a biblioteca open tracing-auto para rastreamento distribuído com êxito.

Conclusão

Explorar HTTP Timings em Node.js pode revelar gargalos de desempenho e, felizmente, o ecossistema Node oferece ferramentas excelentes para extrair essas métricas cruciais de seu aplicativo. Portanto, use as ferramentas ou técnicas de codificação para melhorar o tempo de resposta de seus aplicativos node.js.

Deixe um Comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *