Como medimos o tempo de resposta node.js

Compreender e medir os horários do HTTP é como ter uma superpotência no desenvolvimento da Web. É como ter uma habilidade especial que permita ver como os computadores conversam entre si, do seu dispositivo para um servidor ou entre servidores. Ajuda você a encontrar e corrigir problemas que diminuem seus sites ou aplicativos. Neste artigo, descobriremos como aprimorar o tempo de resposta HTTP no Node.js para sites e aplicativos mais rápidos.

Desembalando o básico

Antes de nos aprofundarmos nos horários do HTTP, vamos aprender alguns básicos para estabelecer as bases para uma compreensão adequada.

IP (Internet Protocol):

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

DNS (servidores de nomes de domínio):

Este sistema de nomeação hierárquica traduz nomes de host legíveis por humanos, cruciais para Aplicativos da Webem endereços IP legíveis por máquina.

TCP (Protocolo de Controle de Transmissão):

Uma regra que ajuda a configurar e manter as negociações entre os programas de computador em uma rede. Ele garante entrega confiável, ordenada e verificada por erros de dados entre hosts em uma rede IP.

SSL/TLS (segurança da camada de transporte):

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

Pesquisa de DNS:

Tempo gasto resolvendo nomes de domínio para endereços IP. Cada novo domínio desencadeia uma viagem de ida e volta completa para a pesquisa do 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 os hosts de origem e destino. Isso envolve um processo de aperto de mão em várias etapas, gerenciado pelo sistema operacional. Se a conexão TCP não puder ser estabelecida, o tempo limite do OS prevalecerá.

TLS Handshake:

Tempo dedicado a concluir um aperto de mão TLS. Esse processo envolve a troca de autenticação e as chaves para estabelecer ou retomar sessões seguras. Observe que um aperto de mão TLS não ocorre com solicitações não-HTTPS.

Hora de primeiro byte (TTFB):

O tempo gasto esperando 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 fornecer 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 horários do HTTP ajudam a identificar gargalos?

Por exemplo, se a pesquisa do DNS levar mais tempo do que o previsto, o problema poderá estar relacionado ao seu provedor de DNS ou configurações de cache. E se o tempo para o primeiro byte for prolongado, você poderá examinar rapidamente a latência entre os pontos de extremidade 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 transmitir dados excessivos (propriedades JSON não utilizadas) ou devido a uma conexão lenta.

Medindo os horários HTTP em Node.js: revelando o código

Para verificar os horários do HTTP no Node.js, devemos ouvir solicitações, respostas e eventos de soquetes específicos. Aqui está um snippet de código rápido demonstrando como fazer isso no node.js; Este exemplo se concentra apenas nos horários.

Exemplo Código para Pesquisa de DNS

// Verifique se ocorreu a pesquisa 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 TLS Handshake Funciona apenas com o protocolo HTTPS

// Verifique se ocorreu handshake de TLS (https)

const tlshandshake = tlshandshakeat! == indefinido? getDuration (tcpConnectionAt, tlshandshakeat): indefinido;

Após o aperto de mão do TLS, esperamos o servidor enviar o Primeiro byte

const FirstByte = getDuration (tlshandshakeat || tcpConnectionAt, FirstByTeat);

Depois do primeiro byte Transferência de conteúdo começa

const contentTransfer = getDuration (FirstByTeat, endat);

Ferramentas para medir o tempo de resposta

Agora que aprendemos como medir os horários do HTTP com o nó, 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 usado vem equipado com um recurso conveniente para medir os horários do HTTP. Para ativar esse recurso, use a propriedade Time.

Rastreamento distribuído

Você pode usar a técnica de rastreamento distribuído e exibir os horários HTTP visualmente em uma linha do tempo. Essa 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 aberta de rastreamento para distribuir com sucesso rastreamento.

Conclusão

Explorando os horários HTTP no Node.js pode revelar gargalos de desempenho e, felizmente, o ecossistema de nós oferece excelentes ferramentas para extrair essas métricas cruciais do seu aplicativo. Portanto, use as ferramentas ou técnicas de codificação para melhorar o tempo de resposta dos seus aplicativos Node.js.

Precisa atualizar seu negócio?

Reserve sua consulta gratuita de 30 minutos conosco

Entre em contato

Deixe um comentário