RPC JavaScript no Cloudflare Workers revela a chamada lenta

Veja como o tracing de RPC JavaScript conecta Workers e Durable Objects, aponta a chamada lenta e ajuda a calcular o custo antes de ampliar o uso.

Thursday, September 17, 2026Omid Saffari
RPC JavaScript no Cloudflare Workers revela a chamada lenta

Em 17 de setembro de 2026, a Cloudflare facilitou a tarefa de atribuir a origem de uma solicitação lenta de cliente: o tracing de RPC JavaScript no Cloudflare Workers agora acompanha a chamada até outro Worker ou Durable Object, em vez de parar em quem chamou. Assim, dá para identificar qual serviço e qual método seguraram a solicitação antes de criar spans manuais ou culpar a stack inteira.

RPC JavaScript agora revela o trecho que faltava

RPC parece mais complicado do que realmente é. No Cloudflare Workers, uma chamada de procedimento remoto acontece quando um Worker invoca um método JavaScript público de outro Worker ou Durable Object por meio de um binding. No código, ela se parece com uma chamada de método local, embora o trabalho seja executado em outro lugar.

Um trace mostra a linha do tempo de uma solicitação. Cada trecho cronometrado dentro dele é um span. Antes deste lançamento, essa linha do tempo parava quando o chamador atravessava uma fronteira de RPC JavaScript. Era possível ver o Worker A fazer a chamada, mas não relacioná-la com clareza ao trabalho executado no Worker B ou em um Durable Object.

O lançamento da Cloudflare em 17 de setembro preenche essa lacuna. Agora, o mesmo trace pode exibir a sessão do lado do chamador, cada chamada de método, a invocação no destino, chamadas aninhadas e callbacks para outro Worker. A Cloudflare registra esses spans automaticamente assim que o tracing é ativado. Essa instrumentação da plataforma dispensa a inclusão de um SDK de observabilidade e não exige mudanças no código da aplicação.

O span de sessão funciona como contêiner da sessão RPC no lado do chamador. As chamadas que reutilizam a sessão ficam dentro dele. Cada span de chamada carrega o caminho do método ou da propriedade, enquanto o destino recebe seu próprio span de invocação. Mudanças de cor sinalizam quando a execução passa de um Worker para outro ou entra em um Durable Object.

Com isso, uma fronteira opaca vira um mapa claro de responsabilidade.

Acompanhe uma solicitação de checkout do começo ao fim

Considere uma solicitação de cliente para POST /checkout.

Ela chega primeiro a um Worker de checkout. Esse Worker chama inventory.reserve() em um Worker de estoque e, depois, order.commit() em um Durable Object de pedidos. Para o cliente, existe apenas um checkout lento; na aplicação, a espera pode estar em três lugares.

Antes da mudança, o trace do checkout podia terminar na chamada RPC. Para reconstruir o restante, seria preciso consultar os logs de cada serviço, cruzar identificadores ou criar spans personalizados.

Agora, o trace mantém toda a solicitação conectada. É possível expandir a sessão RPC, localizar os spans dos métodos reserve e commit, ver as invocações seguintes e comparar onde está concentrado o tempo total. Os spans raiz também podem trazer Cloudflare Ray ID, nome do Worker, entrypoint, resultado, tempo de CPU e tempo total. São referências úteis para quem precisa encontrar a solicitação certa durante um incidente.

Modelo arquitetônico de uma solicitação de checkout atravessando um Worker, um Worker de estoque e um Durable Object de pedidos, com o trecho lento em destaque
Uma solicitação de cliente passa a formar um caminho conectado, em vez de várias linhas do tempo isoladas por serviço.

A nova visualização não explica por que um método está lento. Ela aponta onde investigar em seguida. Se a invocação do estoque concentra a maior parte da espera, examine o armazenamento ou a dependência externa desse serviço. Se a chamada ao Durable Object aparece como o span mais largo, verifique o handler do objeto e suas operações de armazenamento. Se a lentidão está no chamador antes mesmo de qualquer RPC começar, os serviços seguintes não são os primeiros suspeitos.

Quem ganha com isso

Um fundador solo com o backend dividido

Quem mantém checkout, estoque e estado do pedido em Workers separados pode reproduzir uma compra lenta e acompanhar todo o percurso dentro da Cloudflare. O ganho é reduzir a área de investigação: a análise se concentra no Worker ou Durable Object responsável pelo atraso, sem reabrir todos os serviços.

A liderança de backend de um produto com estado

Em um app de colaboração, uma ação dentro de uma sala pode sair de um Worker na borda e chegar a um Durable Object da própria sala. A liderança de backend consegue separar o tempo gasto no chamador daquele consumido pelo objeto com estado e, então, entregar o trace à equipe responsável por essa fronteira.

Engenharia de plataforma com serviços internos em Workers

Uma equipe de plataforma pode ter vários Workers ligados por service bindings, com stubs retornados e callbacks formando um caminho difícil de reconstruir apenas com logs. Os spans de sessão e de método mostram quais chamadas reutilizaram uma sessão, qual Worker executou cada etapa e onde uma chamada aninhada entrou no fluxo.

Suporte transformando relato em evidência

O suporte pode pedir que a engenharia reproduza a mesma rota enquanto os detalhes do incidente ainda estão frescos. O trace resultante acrescenta ao repasse o nome do serviço e a fronteira do método, em vez de apenas dizer que “o checkout estava lento”. Isso continua útil mesmo quando a correção final exige logs, um profiler ou o plano de consulta do banco de dados.

Comece na segunda-feira com um teste controlado

Para começar, faça o rollout em um único caminho de solicitação, não em todos os Workers de produção de uma vez.

  1. Escolha um caminho visível para o cliente

    Selecione uma solicitação que já atravesse uma fronteira RPC entre Workers ou entre um Worker e um Durable Object e que tenha um caso lento reproduzível. Registre a rota, as chamadas de método esperadas nos serviços seguintes e o horário em que o teste será reproduzido.

  2. Ative os traces no Wrangler

    Adicione à configuração do Wrangler no Worker responsável por esse caminho a opção documentada pela Cloudflare:

    Jsonc
    {
      "$schema": "./node_modules/wrangler/config-schema.json",
      "observability": {
        "traces": {
          "enabled": true
        }
      }
    }

    Faça o deploy dessa configuração pelo fluxo normal de releases. A opção ativa os spans automáticos da Cloudflare sem exigir um SDK dentro do Worker.

  3. Reproduza uma solicitação lenta

    Execute uma vez a mesma solicitação em condições controladas. Guarde a rota, o timestamp e o Cloudflare Ray ID, caso o fluxo de suporte ou de logs já o capture. Um ambiente controlado produz um resultado mais limpo porque a taxa padrão de amostragem de traces é 1: quando nenhuma outra taxa é definida, 100% das solicitações recebidas entram no tracing.

  4. Leia o trace de fora para dentro

    Na Cloudflare, acesse Workers & Pages, selecione o Worker e abra Observability. Encontre a solicitação reproduzida e expanda o trace. Comece pela solicitação raiz; depois, siga a sessão RPC, o span do método no chamador, a invocação no destino e qualquer chamada aninhada a um Durable Object. Use a largura do span e os campos de tempo total para localizar a fronteira que merece a próxima investigação.

  5. Calcule a conta antes de ampliar o uso

    Registre quantos spans o trace reproduzido criou. Depois, estime os eventos mensais de tracing como sampled requests × average spans per sampled trace. Some também os eventos de log que já consomem a mesma cota de observabilidade. A quantidade medida de spans será a base para decidir a amostragem em produção.

O custo é por span, não por solicitação

O tracing do Workers é gratuito durante o período beta inicial. Isso muda em 1º de outubro de 2026. A partir dessa data, cada span passa a contar como um evento de observabilidade e compartilha a mesma cota e a mesma tabela de preços do Workers Logs.

PlanoEventos de observabilidade incluídosRetençãoExcedente
Workers Free200,000 por dia3 diasNão há tarifa pública de excedente
Workers Paid20 milhões por mês7 dias$0.60 por milhão de eventos adicionais

Equipes Enterprise precisam consultar o próprio contrato. Para todos os demais, o ponto importante é a unidade de cobrança: uma única solicitação de cliente pode gerar um span raiz, um span de sessão RPC, spans de chamadas de método, invocações no destino e spans de bindings aninhados. Só a quantidade de solicitações não permite prever a conta de tracing.

A documentação de tracing da Cloudflare informa que o valor padrão de head_sampling_rate é 1, ou 100%. No exemplo de alto tráfego, a taxa é 0.05, o que rastreia cinco de cada cem solicitações recebidas. Esse exemplo é um mecanismo de controle, não uma resposta universal.

A amostragem no início da solicitação deixa o trade-off evidente. Uma taxa menor reduz o volume de eventos, mas a decisão acontece antes de a solicitação ser processada. Por isso, uma solicitação lenta e rara pode ficar de fora. Use amostragem integral em uma reprodução controlada ou em um ambiente devidamente isolado; depois, escolha a taxa de produção com base no tráfego real e no número de spans medido em cada trace.

A retenção também muda o fluxo de resposta a incidentes. No plano Free, os traces duram 3 dias; no Paid, 7 dias. Se o relato do cliente chegar depois desse intervalo, o trace necessário talvez já tenha desaparecido. A regra operacional é simples: reproduza e examine enquanto a evidência ainda existe ou exporte os traces para um sistema cuja retenção atenda ao processo da equipe.

Os limites, sem maquiagem

O Workers tracing ainda está em beta aberto. Os nomes de spans e atributos podem mudar, e a Cloudflare informa que alguns atributos continuam incompletos.

Alguns spans que não envolvem I/O podem exibir 0 ms mesmo quando o trabalho levou mais tempo. O Workers Runtime só atualiza o tempo quando ocorre um evento de I/O. Portanto, zero não prova que um trecho de JavaScript não consumiu tempo.

O trace também deixa de ser automático fora da Cloudflare. Ao exportar traces do Workers, a Cloudflare ainda não propaga os IDs de trace para serviços externos. Em uma chamada a um provedor de pagamentos ou a um banco de dados hospedado em outro lugar, o trace do lado do fornecedor não será conectado automaticamente à linha do tempo do Workers.

Por fim, este lançamento tem alcance específico. Um único Worker sem fronteira de RPC JavaScript não recebe uma nova visão entre serviços. O tracing geral do Workers ainda pode ajudar a analisar fetches, bindings e handlers, mas a mudança de 17 de setembro é especialmente relevante para aplicações que já estão divididas entre Workers ou Durable Objects.

O que fazer agora

Vale agir ainda nesta semana se as solicitações dos clientes atravessam service bindings ou Durable Objects e a equipe ainda precisa combinar vários logs para localizar um trecho lento. Comece pelo caminho que mais custa em trabalho de suporte ou resposta a incidentes.

Vale esperar se a aplicação ainda roda em um único Worker ou se a suspeita de lentidão está inteiramente em um provedor externo. Este lançamento não cria um trace conectado fora da Cloudflare.

Se o tracing já está ativo, examine os novos spans de RPC antes de acrescentar instrumentação personalizada. Crie spans próprios somente quando o trace automático revelar uma lacuna relevante dentro do método sob responsabilidade da equipe.

O próximo passo, já na segunda-feira, é pequeno: ative observability.traces.enabled para um caminho real, reproduza a solicitação lenta, examine a sessão RPC e os spans de método e, antes de ampliar o rollout, registre a taxa de amostragem, a média de spans por trace, a janela de retenção e o consumo de cota esperado.

Se você quer receber uma nota operacional objetiva sempre que uma mudança de plataforma afetar o trabalho ou a conta, assine a newsletter.

Última atualização
17 de set. de 2026
Categoria
Explained

Prefira este site no Google

Adicionar omidsaffari.com como fonte preferida na Busca do Google

Marque omidsaffari.com como fonte preferida e o Google destaca o site para você em Top Stories, AI Overviews e AI Mode.

Deploy Vercel no Hobby: previews podem sumir antes de 30 dias

Deploy Vercel no Hobby: previews podem sumir antes de 30 dias

Equipes no Vercel Hobby acima de 10GB podem perder previews desprotegidos antes de 30 dias. Veja o que segue protegido e como revisar seus deploys.17 de set. de 2026Explained
Cloudflare AI Gateway evita cobranças na conta errada

Cloudflare AI Gateway evita cobranças na conta errada

Veja como o Cloudflare AI Gateway exige credenciais do provedor, bloqueia o fallback para Unified Billing e evita que o custo caia na conta errada.17 de set. de 2026Explained
Cloudflare Hyperdrive conecta Python Workers ao PostgreSQL e MySQL

Cloudflare Hyperdrive conecta Python Workers ao PostgreSQL e MySQL

Entenda quando o Cloudflare Hyperdrive permite ligar Python Workers a PostgreSQL ou MySQL existentes e remover uma ponte HTTP sem migrar os dados.16 de set. de 2026Explained
IA de voz sem silêncio: o que muda no Gemini 3.8 Live

IA de voz sem silêncio: o que muda no Gemini 3.8 Live

O Gemini 3.8 Live mantém a conversa enquanto ferramentas rodam em segundo plano. Entenda custos, riscos e como medir tarefas realmente concluídas.16 de set. de 2026Explained
Wrangler Cloudflare: controle o deploy de cada cliente

Wrangler Cloudflare: controle o deploy de cada cliente

Veja como restringir o deploy com Wrangler Cloudflare a um único Worker por cliente, usando tokens, papéis granulares e políticas de menor privilégio.15 de set. de 2026Explained
Controle de acesso à rede no Claude Code passa a valer por comando

Controle de acesso à rede no Claude Code passa a valer por comando

Entenda como o controle de acesso à rede por comando do Claude Code reduz permissões persistentes em instalações de dependências executadas no sandbox.15 de set. de 2026Explained
Agentes de IA no Vercel AI SDK: a assinatura pode pagar a conta

Agentes de IA no Vercel AI SDK: a assinatura pode pagar a conta

O Vercel AI SDK agora usa assinaturas compatíveis de agentes de IA. Veja qual credencial define a cobrança, qual plano paga e quanto o Sandbox ainda custa.15 de set. de 2026Explained
Browser automation com Cloudflare: hosts aprovados e revisão somente leitura

Browser automation com Cloudflare: hosts aprovados e revisão somente leitura

Veja como restringir o Cloudflare Browser Run a hosts aprovados, oferecer Live View somente leitura e calcular o impacto na operação e na cobrança.14 de set. de 2026Explained
Newsletter

Uma carta, todo domingo.Sistemas que funcionam, não hot takes.

Semanal. Sem spam. Cancele quando quiser.