Compreendendo e analisando o tempo limite do servidor proxy

Ver Categorias

Compreendendo e analisando o tempo limite do servidor proxy

9 min read

Intro #

Um serviço de proxy é um software projetado para gerenciar de forma transparente as conexões dos clientes com um ou mais serviços, fornecendo dados avançados ou manipulação de conexões no nível do aplicativo (camada 7 no modelo OSI). Para isso, o serviço proxy estabelece uma conexão com o cliente e outra com o servidor, visando garantir uma conectividade perfeita entre eles.

Ao implementar o balanceamento de carga por meio de um serviço de proxy (funcionando efetivamente como um proxy reverso), é essencial personalizar os tempos limite para facilitar conexões suaves. Os valores de tempo limite padrão podem não ser suficientes, dependendo das características dos clientes ou dos serviços de aplicação. Quaisquer erros relacionados ao tempo limite serão registrados nos logs do sistema em / var / log / syslog, tornando crucial revisar este arquivo em busca de possíveis problemas.

Este artigo fornece insights sobre como analisar e identificar problemas comuns de tempo limite em servidores proxy. A principal informação a ser investigada é se os tempos limite ocorrem no backend ou no cliente. Uma vez feita essa distinção, ajustes de tempo limite apropriados poderão ser aplicados.

Tempo limite lateral de back-end #

Se o tempo limite estiver ocorrendo no backend, as mensagens correspondentes serão exibidas da seguinte forma:

21 de agosto 09:23:06 noid-ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, back-end 10.100.200.10:443, (7ff830b85700) erro cópia servidor cont: conexão expirou 21 de agosto 09 :23:06 noid-ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, backend 10.100.200.11:443, (7ff832d8b700) erro cont do servidor de cópia: Tempo limite de conexão esgotado 21 de agosto 09:23: 16 noid-ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, backend 10.100.200.10:443, (7ff799926700) erro copy server cont: Conexão expirou em 21 de agosto 09:23:18 noid- ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, backend 10.100.200.10:443, (7ff830bc6700) servidor de cópia de erro cont: tubo quebrado 21 de agosto 09:23:19 noid-ee-01 libra : noid-proxy-farm-01, serviço noid-service-01, back-end 10.100.200.10:444, (7f15f5a8c700) connect_nb: a enquete expirou em 21 de agosto 09:23:24 noid-ee-01 libra: noid-proxy-farm -01, serviço noid-service-01, back-end 10.100.200.11:443, (7ff79a9a7700) erro cont do servidor de cópia: Tempo limite de conexão esgotado em 21 de agosto 09:23:24 noid-ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, back-end 10.100.200.10:443, (7ff79a28b700) erro cont do servidor de cópia: tempo limite de conexão esgotado

Esses erros de tempo limite de back-end especificam o relevante fazenda, serviço e backend associado ao erro. Esta informação identifica claramente o backend ou backends vinculados ao problema. Se vários farms, serviços ou back-ends estiverem implicados no problema de tempo limite, talvez seja necessário coletar informações adicionais para investigar possíveis problemas de rede.

A ativação dos logs do farm pode revelar instâncias em que um back-end específico inicialmente responde rapidamente, mas repentinamente encontra um problema de tempo limite, conforme ilustrado no trecho do log abaixo:

25 de janeiro 19:57:04 noid-ee-01 libra: noid-proxy-farm-01, my.service.com 185.106.182.130 - - [25/Jan/2024:19:57:04 +0000] "GET / myserv/ HTTP/1.1" 200 9 "" "Mozilla/3.0 (compatível; ...)" (noid-service-01 -> 10.100.200.10:443) 0.039 s
25 de janeiro 19:57:04 noid-ee-01 libra: noid-proxy-farm-01, my.service.com 88.111.111.111 - - [25/Jan/2024:19:57:04 +0000] "GET / myserv/ HTTP/1.1" 200 9 "" "Mozilla/3.0 (compatível; ...)" (noid-service-01 -> 10.100.200.10:443) 0.035 s

25 de janeiro 19:57:04 noid-ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, back-end 10.100.200.10:443, (7fcd8eb0f700) connect_nb: a enquete expirou
25 de janeiro 19:57:04 noid-ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, backend 10.100.200.10:443, (7fcd8eb0f700) backend 10.100.200.10:443 conexão: tempo limite de conexão esgotado 25 de janeiro 19:57:04 noid-ee-01 libra: noid-proxy-farm-01, (7fcd8eb0f700) BackEnd 10.100.200.10:443 morto (morto) na fazenda: 'noid-proxy-farm-01', serviço: 'ocp-ocuco-com' 25 de janeiro 19:57:04 noid-ee-01 libra: noid-proxy-farm-01, serviço noid-service-01, backend 10.100.200.10:443, (7fcd8eb0f700) BackEnd morto (morto )

Esse comportamento pode indicar que o back-end atingiu seu limite de conexão, impedindo conexões adicionais. Alternativamente, poderia sugerir que o back-end não está liberando conexões com rapidez suficiente, levando a um gargalo. Para resolver esse problema, é recomendável monitorar o back-end e implementar otimizações, como permitir mais conexões ou dimensionar o serviço adicionando back-ends adicionais.

Se apenas back-ends específicos estiverem enfrentando problemas de tempo limite no mesmo serviço, isso implica que esses back-ends específicos podem ter problemas relacionados à entrega lenta de aplicativos ou problemas de rede. As soluções ou mitigações para esses erros são descritas abaixo.

Tempo limite do lado do cliente #

Por outro lado, os tempos limite do cliente se manifestam no syslog no seguinte formato:

18 de agosto 07:31:38 noid-ee-01 libra: noid-proxy-farm-01, (7f8862187700) erro lido de 12.91.1.78: Tempo limite de conexão esgotado 18 de agosto 07:31:43 noid-ee-01 libra: noid -proxy-farm-01, (7f8863c71700) erro lido de 12.2.1.105: Tempo limite de conexão esgotado em 18 de agosto 07:32:03 noid-ee-01 libra: noid-proxy-farm-01, (7f886275e700) erro lido de 12.41.1.58. 18: A conexão expirou em 07 de agosto 32:07:01 noid-ee-01 libra: noid-proxy-farm-7, (8880f84700d12.88.1.67) erro lido de 18: A conexão expirou em 07 de agosto 32:16:01 noid-ee -01 libra: noid-proxy-farm-7, (8880933700f12.3.1.158) erro lido de XNUMX: Tempo limite de conexão esgotado

Se os logs não tiverem informações de farm ou serviço, isso indicará que a solicitação do cliente não chegou ao proxy corretamente. O cliente está demorando muito para executar a solicitação HTTP, fazendo com que o proxy desconheça o serviço solicitante. A matriz de endereços IP pode ajudar a discernir se o problema pertence a uma rede interna, a clientes externos ou àqueles que chegam através de um firewall específico.

Além disso, para clientes externos, é fundamental verificar a sua legitimidade. A utilização dos serviços AbuseIP pode ajudar na coleta de tais informações.

Além disso, para resolver problemas de tempo limite do cliente, é crucial verificar se o proxy não está encerrando conexões prematuramente. Certifique-se de que a soma do tempo limite de conexão e dos tempos limites de back-end seja menor que o tempo limite do cliente para evitar qualquer desconexão prematura pelo proxy.

Consulte abaixo informações sobre como lidar ou mitigar esses erros.

Corrigindo tempos limite de back-end #

Verificação da camada de rede #

Para começar, é essencial confirmar a estabilidade da camada de rede e garantir a ausência de pacotes duplicados, pacotes perdidos ou flutuações significativas na latência. Siga estas etapas para realizar a verificação da camada de rede:

1. Execute um ping do balanceador de carga para o back-end e deixe-o funcionar por alguns minutos.

root@noid-ee-01:~# ping 10.100.200.10

2. Observe as respostas do ping durante a execução:

PING 10.100.200.10 (10.100.200.10) 56(84) bytes de dados. 64 bytes de 10.100.200.10: icmp_seq=1 ttl=64 tempo=0.395 ms 64 bytes de 10.100.200.10: icmp_seq=2 ttl=64 tempo=0.626 ms 64 bytes de 10.100.200.10: icmp_seq=3 tempo=64 ms [...] 0.178 bytes de 64: icmp_seq = 10.100.200.10 ttl = 21 tempo = 64 ms 0.502 bytes de 64: icmp_seq = 10.100.200.10 ttl = 22 tempo = 64 ms 0.638 de 64: icmp_seq = 10.100.200.10 ms 23 de 64: icmp_seq ttl=0.573 tempo=10.100.200.10 ms ^C --- XNUMX estatísticas de ping ---
23 pacotes transmitidos, 23 recebidos, 0% de perda de pacotes, tempo 140 ms rtt min/méd/máx/mdev = 0.178/0.539/0.854/0.141 ms

Esta resposta indica que a rede está estável, sem perda de pacotes ou problemas de latência. Garanta a ausência de anomalias durante o teste de ping para confirmar a confiabilidade da camada de rede.

Além disso, ao executar um tcpdump quando o problema for replicado, você pode analisar o tráfego da rede para identificar o momento específico em que a comunicação sofre atrasos ou quando determinados pacotes estão faltando. Utilize o seguinte comando:

root@noid-ee-01:~# tcpdump -i qualquer porta tcp PORTA e host BACKENDIP -w /tmp/capture.pcap

Este comando irá gerar um arquivo chamado /tmp/capture.pcap, que pode ser analisado usando o Wireshark. Tenha cuidado, pois esse arquivo poderá crescer rapidamente se capturar uma quantidade substancial de tráfego.

Ajuste de tempo limite do proxy #

Ajustando vários tempos limite no Configuração avançada do farm nos permite adaptar o comportamento do proxy às necessidades de nossos servidores de aplicativos, especialmente quando eles exigem tempo adicional para cada solicitação ou quando o desempenho da rede é lento. Considere as seguintes recomendações:

Tempo limite de conexão de back-end: Defina o tempo máximo para um conectar() operação no back-end selecionado. Se mensagens como “connect_nb: a enquete expirou” são detectados, considere aumentar esse valor do padrão de 20 segundos para 30 ou 40 segundos. Aumente gradualmente o valor com base nos resultados observados, tendo em mente que o tempo limite pode estar resolvendo um problema subjacente em outro lugar.

Tempo limite de resposta de back-end: Ajuste este valor se a mensagem “Erro ao copiar cont do servidor: Tempo limite de conexão esgotado” é identificado. Da mesma forma, aumente gradativamente esse valor até que seja observada uma diminuição nessas mensagens. No entanto, tenha cuidado para não aumentar excessivamente este valor, pois isso pode mascarar problemas subjacentes no backend. O valor padrão é 45 segundos, portanto considere aumentá-lo para 60 segundos ou mais, monitorando a ausência de erros.

Frequência para verificar back-ends ressuscitados: nos casos em que são necessários tempos limite mais altos devido a problemas de rede ou de servidor de aplicativos que causam erros HTTP 503 intermitentes (indicando que nenhum back-end de serviço está disponível), considere diminuir esse valor de 10 segundos para 5. Esse ajuste ajuda a mitigar falsos positivos ao marcar back-ends como inativos causados por tempos limite. Analise se os tempos limite estão dentro dos limites normais, pois o balanceador de carga do proxy pode aliviar certos problemas neste contexto.

Conduza uma análise completa para determinar a normalidade dos tempos limite. O balanceador de carga do proxy tem a capacidade de resolver e mitigar determinados problemas relacionados ao tempo limite.

Para obter informações mais detalhadas, consulte o seguinte artigo:

https://www.relianoid.com/resources/knowledge-base/lslb/enterprise-edition-v6-2-administration-guide-lslb-farms-update-http-profile/

Configurar verificações de integridade #

Farm Guardian tem como objetivo ativar ou desativar back-ends com base em sua disponibilidade. Neste cenário, aproveitar o Farm Guardian nos permite verificar a disponibilidade real dos back-ends. Esse processo opera de forma independente e paralela ao proxy, fornecendo um meio de verificar se os problemas de back-end realmente contribuem para um gargalo no back-end. Além disso, ao examinar as estatísticas de back-end quando um back-end está marcado como inativo, podemos determinar o número de conexões gerenciadas por esse servidor, o que nos permite identificar os limites de conexão de cada back-end.

Configurar uma verificação FarmGuardian para TCP nos permite identificar quaisquer problemas de handshake com os backends, o que pode indicar um gargalo no sistema ou na camada do servidor web. Por outro lado, configurar uma verificação FarmGuardian para HTTP ajuda a identificar problemas na camada de aplicação com os back-ends, apontando para possíveis gargalos na camada de aplicação ou banco de dados.

Corrigindo tempos limite do lado do cliente #

Verificação da camada de rede #

Para validar a estabilidade da rede, execute um teste de ping de outro servidor ou máquina para o endereço IP do IP Virtual configurado para o farm de balanceamento de carga. Isto garante uma perspectiva externa e ajuda a confirmar a confiabilidade da rede.

Verificação de clientes legítimos #

Empregue ferramentas seguras para identificar se os problemas de tempo limite estão associados a clientes legítimos, robôs ou possíveis invasores. Se os tempos limite estiverem vinculados a usuários não autorizados, implemente listas negras de IPDS e/ou proteções DoS para proteger seus serviços e garantir a entrega apenas a usuários válidos e genuínos.

Ajuste de tempo limite do proxy #

Além disso, considere ajustar os tempos limite do proxy para acomodar a natureza dos clientes que se conectam aos seus serviços por meio do balanceador de carga. Se, por exemplo, clientes baseados em dispositivos móveis, problemas de firewall ou redes lentas contribuírem para tempos de resposta estendidos, ajuste o Tempo limite de solicitação do cliente opção no Configurações avançadas da sua Fazenda LSLB. o valor padrão é 30 segundos; você pode aumentá-lo para 60 segundos ou mais com base em seus requisitos específicos. O valor do tempo limite do cliente deve exceder a soma do tempo limite da conexão e do tempo limite de resposta do backend.

Para obter informações mais detalhadas, consulte o seguinte artigo:

https://www.relianoid.com/resources/knowledge-base/lslb/enterprise-edition-v6-2-administration-guide-lslb-farms-update-http-profile/

📄 Baixe este documento em formato PDF #

    E-MAIL: *

    Powered by MelhoresDocs