Extração de dados

Teste de Carga de Proxy Residencial: Como Fazer Stress-Test Antes da Produção

Testar a carga de proxies significa encontrar o seu próprio limite sem atacar o site de outra pessoa. Aqui está o que medir, contra o quê e como interpretar os resultados.

Chris Collins

Chris Collins

2 de setembro de 2026 · 7 min de leitura

Antes de um pipeline de coleta ir para produção, alguém razoavelmente pergunta se ele vai se sustentar em volume total. O instinto é executar um teste de carga, e o instinto está certo, mas o teste de carga em proxies tem uma restrição que o teste de carga comum não tem: a coisa contra a qual você está direcionando tráfego geralmente pertence a outra pessoa.

Esse único fato remodela o exercício. Você não está testando se um sistema consegue absorver sua carga, você está caracterizando o comportamento do seu próprio pipeline e encontrando seu teto, sem conduzir um teste de estresse não anunciado contra terceiros. Veja como fazer isso corretamente.

O que você está de fato testando

Separe as quatro questões, porque elas exigem testes diferentes e apenas uma delas envolve um alvo real.

A capacidade do seu próprio pipeline. Quantas requisições concorrentes seus workers, o tratamento de conexões, o parsing e o armazenamento conseguem sustentar antes que algo sature. Este é um teste do seu código e da sua infraestrutura e pode ser executado sem tocar no site de ninguém.

Comportamento do caminho do proxy sob concorrência. Como a latência e a taxa de sucesso se movem à medida que você aumenta as requisições em andamento pelo gateway. Também majoritariamente independente de qualquer alvo específico.

A tolerância do alvo. Qual ritmo um site específico aceita antes de limitar ou desafiar você. Esta é a questão que deve ser abordada com cuidado e de forma incremental, e não com um gerador de carga.

Throughput de ponta a ponta. O que tudo acima produz junto, que é o número do qual seu cronograma de fato depende.

Confundir essas questões produz o resultado clássico e ruim: um “teste de carga” que martela um único alvo, é bloqueado, e não diz nada além de que você pode ser bloqueado.

Teste primeiro contra algo que você possui

Monte um alvo que você controla e que retorna uma resposta de tamanho realista, e direcione o pipeline a ele através dos proxies. Isso isola tudo, exceto o terceiro.

Você aprende uma quantidade surpreendente de coisas aqui. Se seu pool de workers de fato alcança a concorrência que você configurou. Se o tratamento de conexões está fazendo o que você pensa, já que conexões em pool se comportam de forma diferente através de um gateway, conforme IP não rotacionando. Onde seu parsing ou armazenamento se torna o gargalo. E qual distribuição de latência o caminho do proxy adiciona, sem a variabilidade própria de um alvo misturada.

Use tamanhos de payload realistas. Um teste contra um endpoint minúsculo vai superestimar seu throughput seriamente, porque tanto a largura de banda quanto o parsing escalam com o tamanho da resposta e a latência residencial domina de forma diferente em diferentes tamanhos de payload.

Meça as coisas certas

Throughput isolado é um resumo pobre. Cinco medições tornam um teste de carga interpretável.

Taxa de sucesso validada, não sucesso HTTP. Um teste que reporta 100% de sucesso enquanto retorna páginas de desafio está medindo a coisa errada, conforme detectando conteúdo bloqueado ou falso.

Percentis de latência, especificamente p50, p95 e p99. A latência residencial tem uma distribuição ampla, então uma média esconde a cauda que de fato determina se um trabalho com prazo definido termina.

Throughput como função da concorrência, plotado em vez de amostrado em um único ponto. A característica interessante é onde a curva se estabiliza, já que depois disso você está adicionando requisições em andamento sem adicionar conclusões.

Distribuição de classes de erro, porque a mistura diz o que está te limitando. Timeouts apontam para um lado, sinais de taxa para outro, e desafios para outro ainda, conforme erros comuns de proxy residencial.

Bytes por requisição, já que isso determina o custo em volume de produção e é fácil de medir agora e caro de descobrir depois, conforme estimando a largura de banda mensal.

Aumente gradualmente, não em picos

Aumente a concorrência em etapas, mantenha cada etapa tempo suficiente para os números se estabilizarem, e registre o conjunto completo de medições em cada nível. Um teste de pico não diz quase nada útil aqui, porque a falha que ele produz é indistinguível de um alvo reagindo a uma explosão de tráfego.

O padrão que você está procurando é onde o throughput para de subir com a concorrência, e onde a latência p95 começa a subir bruscamente. Essas duas coisas geralmente coincidem e marcam seu teto prático. Execute seu trabalho de produção em algum ponto abaixo dele, e não nele, porque o teto se move com o comportamento do alvo, a hora do dia e as condições do pool.

for concurrency in [5, 10, 20, 40, 80]:
stats = run_step(concurrency, duration_seconds=180) # hold, then record
print(concurrency, stats.validated_success, stats.p50,
stats.p95, stats.rps, stats.bytes_per_req, stats.error_mix)
if stats.validated_success < 0.9 or stats.p95 > LATENCY_BUDGET:
break # found the knee

Calibrando contra um alvo real, com cuidado

Eventualmente você precisa saber o que suas fontes reais toleram, e isso não pode ser aprendido a partir de um mock. Faça isso como calibração, não como teste de carga.

Comece bem abaixo da taxa pretendida e aumente lentamente, observando a taxa de sucesso validada em vez de códigos de status. Pare de aumentar no primeiro sinal de degradação em vez de empurrar até a falha, já que o objetivo é encontrar um ritmo sustentável, não um ponto de ruptura. Espalhe a calibração por um período mais longo do que parece necessário, porque o limitador de taxa é frequentemente aplicado sobre janelas móveis e uma explosão curta pode passar enquanto uma taxa sustentada não passa.

Respeite o que o alvo diz. Um 429 ou um Retry-After é uma instrução direta e a resposta correta é diminuir o ritmo em vez de rotacionar endereços para manter o ritmo, que é a distinção em limitação de taxa e throttling de requisições.

E mantenha isso proporcional: seu tráfego de calibração deve ser um erro de arredondamento em relação à carga normal do site. Estressar deliberadamente a infraestrutura de terceiros não é um exercício de engenharia benigno, e dependendo da escala e da intenção isso pode cruzar para o campo da interferência. Se você precisa saber os limites de um parceiro com precisão, pergunte a ele.

Interpretando os resultados

Traduza a curva nos dois números que sua configuração de produção precisa: um limite de concorrência por alvo e uma taxa por alvo, ambos definidos abaixo do joelho da curva com margem.

Depois, faça uma verificação de sanidade contra seu cronograma. A concorrência decorre da taxa e da latência, então se sua latência p50 medida for mais alta do que você assumiu, a concorrência necessária para um determinado prazo aumenta correspondentemente, que é a aritmética em planejando volume de requisições e concorrência.

Por fim, trate os resultados como perecíveis. As defesas do alvo mudam, as condições do pool variam por hora e por mercado, e um número medido numa semana tranquila não se sustentará durante um pico. Refaça a calibração periodicamente e, mais importante, execute as mesmas medições continuamente em produção para que o teto seja observado, não assumido, conforme monitorando a saúde do proxy em escala.

Conclusão

O teste de carga em proxies é caracterização de capacidade, não um ataque a terceiros. Separe as quatro questões e teste as duas primeiras contra infraestrutura que você possui com tamanhos de payload realistas, o que isola os gargalos reais do seu pipeline da variabilidade de um alvo. Meça a taxa de sucesso validada, os percentis de latência, o throughput em função da concorrência, a mistura de classes de erro e os bytes por requisição, depois aumente em etapas e procure o joelho onde o throughput se estabiliza e o p95 sobe. Calibre contra alvos reais lentamente e pare no primeiro sinal de degradação em vez de empurrar até a falha, respeitando os sinais de taxa ao diminuir o ritmo em vez de rotacionar. Defina os limites de produção abaixo do joelho, rederive sua concorrência a partir da latência medida, e continue medindo em produção porque o teto se move.

O caminho sendo testado são os proxies residenciais, onde concorrência e geografia são parâmetros por requisição em vez de configurações de plano, cobrados por GB de modo que um teste de carga bem dimensionado custa aproximadamente o que sua largura de banda custa.

Pronto para começar?

Experimente os proxies residenciais da Shifter, mais de 205M IPs, mais de 195 países, a partir de $ 0,75/GB.

Começar