Todos os produtos
Search
Central de documentação

Performance Testing:Erros comuns e soluções

Última atualização: Sep 06, 2026

Quando um teste de estresse no Performance Testing Service (PTS) falha ou retorna resultados inesperados, o erro aparece como uma exceção Java na mensagem de erro ou como um código de status HTTP na resposta. As seções a seguir agrupam ambos os tipos por causa raiz, com as respectivas soluções.

Para localizar seu erro, pesquise a mensagem exata ou navegue até a seção do código de status HTTP correspondente.

Erros de conexão

Esses erros indicam que o PTS não consegue estabelecer ou manter uma conexão com o servidor backend. Comece verificando a integridade do servidor e o caminho de rede entre o PTS e o endpoint de destino.

class java.net.ConnectException:null

Causa: A conexão TCP com o servidor de destino falhou ou foi rejeitada.

Solução: Verifique a integridade do servidor backend e confirme se não há gargalos de rede entre o PTS e o alvo.

org.apache.http.ConnectionClosedException:Connection closed

Causa: O servidor encerrou a conexão de forma anormal.

Solução: Analise os logs do servidor backend em busca de erros ou exaustão de recursos que possam causar desconexões abruptas.

org.apache.hc.core5.http.ConnectionClosedException:Connection is closed

Causa: O PTS enviou uma requisição em uma conexão que o servidor já havia fechado.

Solução: Verifique se há gargalos na largura de banda da camada de gateway ou no caminho de rede. Se o servidor estiver atrás de um balanceador de carga, confirme se as configurações de tempo limite de conexão ociosa estão alinhadas entre o PTS e o balanceador.

java.io.IOException:Connection reset by peer

Causa: O servidor backend forçou o reset da conexão.

Solução: Se houver um Server Load Balancer (SLB) no caminho da requisição, verifique a configuração do listener do SLB, especialmente o tempo limite de conexão e as definições de health check.

org.apache.http.ConnectionClosedException:Connection closed unexpectedly

Causa: A conexão foi encerrada antes que o PTS recebesse a resposta. Os gatilhos mais comuns incluem:

  • O servidor não respondeu dentro do prazo esperado.

  • A sessão de depuração ou o teste de estresse foi interrompido antes da chegada da resposta.

Solução: Confirme se o servidor consegue processar a requisição dentro do tempo limite configurado. Se você parou o teste intencionalmente, esse erro é esperado e pode ser ignorado.

Erros de tempo limite

Esses erros sinalizam que uma requisição ou conexão excedeu o limite de tempo permitido. As causas raízes frequentes envolvem processamento lento no backend, contenção de recursos ou uma configuração de timeout inadequada para a carga de trabalho.

java.util.concurrent.TimeoutException:null

Causa: A tentativa de conexão TCP atingiu o tempo limite. O PTS não conseguiu alcançar o servidor de destino no tempo alocado.

Solução:

  1. Use o fluxo em cascata de tempo nos detalhes do log de amostragem para verificar se a fase de conexão está demorando mais que o normal. Para mais informações, consulte Analyze stress testing results.

  2. Inspecione a integridade do servidor backend e o caminho de rede para identificar possíveis gargalos.

org.apache.hc.core5.http2.H2StreamResetException:Timeout due to inactivity (5000 MILLISECONDS) * class

Causa: O servidor backend não respondeu dentro do tempo limite padrão de requisição de 5 segundos.

Solução: Aumente o tempo limite da requisição na seção Advanced Settings da página Create Scenario.

java.net.SocketTimeoutException:null

Causa: A requisição expirou enquanto aguardava uma resposta ou durante a leitura de dados (tempo limite de inatividade).

Solução:

  1. Certifique-se de que o servidor está íntegro e capaz de processar requisições no tempo esperado.

  2. Verifique se a API de teste de estresse possui uma configuração de tempo limite adequada.

  3. Investigue o servidor em busca de gargalos de desempenho (CPU, memória, I/O).

Erros de redirecionamento e DNS

java.lang.RuntimeException:java.net.UnknownHostException

Causa: Não foi possível resolver o nome de domínio.

Solução:

  1. Confirme se o nome de domínio está registrado e resolvendo corretamente.

  2. Se o domínio não estiver registrado em um DNS público, vincule-o no PTS antes de executar o teste.

org.apache.http.client.CircularRedirectException

Causa: A requisição entrou em um loop de redirecionamento (por exemplo, A -> B -> C -> A) ou ultrapassou o limite de 10 redirecionamentos.

Solução:

  1. Desative o redirecionamento 302: Na página Scenario Settings, desligue a chave Allow 302 Redirect.

  2. Execute o teste de estresse novamente e inspecione a requisição original para confirmar a cadeia de redirecionamento.

  3. Para visualizar o caminho exato do redirecionamento, abra os detalhes do log de amostragem no relatório de teste de estresse e verifique o fluxo em cascata de tempo. Para mais informações, consulte Analyze stress testing results.

Erros de protocolo HTTP/2

org.apache.hc.core5.http.ProtocolException:Header 'key: value' is illegal for HTTP/2 messages

Causa: O cenário inclui cabeçalhos não permitidos pelo HTTP/2. Os seguintes cabeçalhos são proibidos no HTTP/2: Connection, Keep-Alive, Proxy-Connection, Transfer-Encoding, Host e Upgrade.

Solução: Remova os cabeçalhos não suportados da configuração do cenário e execute o teste novamente.

java.nio.channels.CancelledKeyException:null

Causa: O servidor backend encerrou a conexão sob o protocolo HTTP/2.

Solução: Investigue os logs do servidor backend procurando problemas específicos do HTTP/2, como resets de stream ou frames GOAWAY.

Erros de script JMeter

Estes erros ocorrem quando um script JMeter é incompatível com o JMeter V5.0, versão suportada pelo PTS.

java.lang.RuntimeException: Could not find the TestPlan class!

Causa: O script JMeter foi criado com uma versão incompatível com o JMeter V5.0.

Solução: Abra e salve novamente o script no JMeter V5.0 e, em seguida, envie-o para o PTS outra vez.

java.lang.SecurityException: class "xxx"'s signer information does not match signer information of other classes in the same package

Causa: A dependência do sampler Java (ApacheJMeter_core ou ApacheJMeter_java) no script foi compilada com uma versão do JMeter diferente da V5.0.

Solução: Reempacote o JAR de dependência usando as bibliotecas do JMeter V5.0 e envie o pacote atualizado.

Attempt to resolve method: xxx() on undefined variable or class name:

Causa: O sampler BeanShell referencia uma classe que não foi enviada junto com o script.

Solução: Envie o pacote JAR ausente que contém a classe necessária e execute o teste novamente.

Erros de rede VPC

class java.lang.IllegalArgumentException:forbidden uri, uri host must match vpc cidr pattern 10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0/16

Causa: O teste de estresse está configurado para usar uma VPC, mas o nome de domínio na URL do teste resolve para um endereço IP público em vez de um endereço IP interno. Testes de estresse em VPC exigem que o IP de destino esteja dentro de um intervalo CIDR privado (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16).

Solução: Qualquer uma das abordagens abaixo funciona:

  • Use um endereço IP interno diretamente na URL do teste.

  • Faça login no PTS console e vincule o nome de domínio a um endereço IP interno.

Códigos de erro HTTP

403 (Forbidden)

Uma resposta 403 significa que o servidor recebeu a requisição, mas recusou sua autorização. Causas comuns em testes de estresse do PTS:

Rejeição de autenticação pelo backend

Causa: O mecanismo de autenticação do servidor rejeitou a requisição, por exemplo, devido a um token ausente ou inválido.

Solução: Revise as configurações de autenticação do service backend e garanta que a requisição do teste de estresse inclua credenciais válidas.

Falha na validação do User-Agent

Causa: O gateway do servidor valida o cabeçalho User-Agent (UA). O UA padrão enviado pelo PTS contém um caractere especial para que alguns services possam distinguir entre tráfego estatístico e regras de limitação. Alguns gateways rejeitam esse UA não padrão.

Solução:

  1. No PTS console, acesse Performance Test > Scenarios.

  2. Selecione o cenário e clique em Edit na coluna Actions.

  3. Na aba Header Definition da página Scenario Settings, defina um UA de navegador padrão: Key: User-Agent Value: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36

  4. Clique em Debug. Na página Request Details, verifique se a requisição foi bem-sucedida. Se funcionar após a alteração do UA, continue o teste de estresse com o cabeçalho modificado.

Bloqueio pelo WAF (raro)

Causa: O Web Application Firewall (WAF) está bloqueando o tráfego do teste de estresse.

Solução: Configure uma regra de lista de permissões no WAF que permita o tráfego do PTS. Para mais detalhes, consulte What do I do if the stress testing traffic cannot access my web application due to security policies?

Domínio sem registro ICP

Causa: O nome de domínio usado para o teste de estresse não possui registro ICP ou resolve para outro domínio que também não possui registro.

Solução: Verifique o corpo da resposta. Se a resposta contiver HTML semelhante ao seguinte, o domínio carece de registro ICP:

<html>
<head>
<meta http-equiv="Content-Type" content="textml;charset=UTF-8" />
   <style>body{background-color:#FFFFFF}</style>
<title>TestPage184</title>
  <script language="javascript" type="text/javascript">
         window.onload = function () {
           document.getElementById("mainFrame").src= "http://****.aliyun.com/alww.html";
            }
</script>
</head>
  <body>
    <iframe style="width:860px; height:500px;position:absolute;margin-left:-430px;margin-top:-250px;top:50%;left:50%;" id="mainFrame" src="" frameborder="0" scrolling="no"></iframe>
    </body>
</html>

Solicite o registro ICP para o domínio antes de tentar o teste de estresse novamente.

405 (Method Not Allowed)

Uma resposta 405 indica que o servidor não suporta o método HTTP utilizado na requisição. Causas frequentes no PTS:

  1. Redirecionamento 302 altera o método da requisição. Quando uma requisição POST aciona um redirecionamento 302, o cliente HTTP pode convertê-la para GET. Se o endpoint de destino não aceitar GET, um erro 405 será retornado.

  2. O servidor restringe métodos explicitamente. Verifique o cabeçalho de resposta Allow (por exemplo, Allow=GET) para ver quais métodos o servidor aceita.

  3. Encaminhamento via SLB ou servidor web modifica o método. Ao encaminhar a requisição, um balanceador de carga ou proxy reverso pode alterar o método. Valide as regras de encaminhamento.

406 (Not Acceptable)

Uma resposta 406 significa que o servidor não pode gerar uma resposta compatível com o cabeçalho Accept da requisição.

Causa: O valor de Accept na aba Header Definition não corresponde ao tipo de conteúdo que o servidor pode retornar. Isso geralmente acontece quando o Content-Type na aba Body Definition é sincronizado automaticamente com a aba Header Definition, e o valor de Accept entra em conflito com ele.

Solução: Ajuste o cabeçalho Accept para corresponder a um tipo suportado pelo servidor. Teste diferentes valores para determinar quais tipos são aceitos. A tabela abaixo lista formatos comuns de Accept e sua ordem de correspondência.

Formato

Descrição

text/html

HTML

text/plain

Texto simples

text/xml

XML

image/gif

Imagem GIF

image/jpeg

Imagem JPEG

image/png

Imagem PNG

application/xhtml+xml

XHTML

application/xml

Dados XML

application/atom+xml

Agregação Atom XML

application/json

Dados JSON

application/pdf

PDF

application/msword

Documento Word

application/octet-stream

Fluxo binário (downloads de arquivos)

application/x-www-form-urlencoded

Codificação de formulário padrão (pares chave-valor)

Prioridade de correspondência: Quando múltiplos tipos de Accept são especificados, o servidor os avalia nesta ordem:

  • Sem fator de qualidade: Correspondência da esquerda para a direita. application/xml, text/html, application/json resulta em application/xml > text/html > application/json.

  • Com fator de qualidade: Valores maiores de q têm prioridade. application/xml;q=0.3, application/json;q=0.8, text/html (padrão q=1.0) resulta em text/html > application/json > application/xml.

  • Especificidade de curinga: Tipos mais específicos correspondem primeiro. */*, text/*, text/html resulta em text/html > text/* > */*.

503 (Service Unavailable)

Servidor backend sobrecarregado

Causa: O servidor backend está sobrecarregado e recusa novas requisições.

Solução: Examine os logs de erro do servidor backend em busca de exaustão de recursos ou limites de capacidade.

Limitação pelo SLB devido a poucos IPs de source

Causa: Um grande número de erros 503 aparece no log de amostragem do PTS, mas o servidor backend não apresenta erros correspondentes. Esse cenário ocorre tipicamente quando todas as condições abaixo são verdadeiras:

  • O teste de estresse utiliza uma API HTTP ou HTTPS.

  • O ponto de entrada é uma instância SLB (voltada para a Internet ou interna).

  • O service backend não retorna erros 503.

  • O corpo da resposta 503 segue este padrão:

      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
      <html>
      <head><title>503 Service Temporarily Unavailable</title></head>
      <body bgcolor="white">
      <h1>503 Service Temporarily Unavailable</h1>
      <p>The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.</body>
      </html>

Causa raiz: O PTS usa conexões longas por padrão. Quando o número de endereços IP de source é pequeno, um único endereço IP pode acionar a limitação de proxy único do SLB, impedindo que o SLB balanceie a carga efetivamente.

Solução:

  1. Ative o recurso de extensão de IP do PTS para aumentar o número de IPs de source. Para mais detalhes, consulte Start a scenario.

  2. Aumente o número máximo de usuários virtuais ou o valor de RPS (requisições por segundo). Para mais detalhes, consulte Configure load models and levels.

  3. Mude de conexões longas para curtas. Na página Scenario Settings, adicione o seguinte cabeçalho na aba Header Definition: Key: Connection Value: close

    Nota

    APIs recém-adicionadas herdam essa configuração por padrão. Ajuste individualmente por API caso seu cenário exija modos de conexão mistos.

504 (BadGateway Timeout)

Causa: O gateway não recebeu uma resposta oportuna do servidor backend.

Solução:

  1. Confirme se o servidor backend está em execução e processando requisições normalmente.

  2. Aumente o período de tempo limite na camada de gateway.

  3. Estenda o tempo limite da requisição na seção Advanced Settings da página Create Scenario para dar mais tempo ao gerador de carga.