<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Drew Tate - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Drew Tate - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/pt/search-labs/author/drew-tate</link>
    </image>
    <link>https://www.elastic.co/pt/search-labs/author/drew-tate</link>
    <atom:link href="https://www.elastic.co/pt/search-labs/rss/author/drew-tate.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[pt]]></language>
    <lastBuildDate>Fri, 18 Sep 2026 21:42:00 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Kibana reduz o tempo de carregamento do dashboard em até 25% — aqui está a estratégia de sondagem por trás disso]]></title>
    <description><![CDATA[Descubra como o Kibana usa sondagem contínua e detecção de HTTP/2 no navegador para reduzir o tempo de carregamento do dashboard em até 25%, com recurso automático ao HTTP/1.]]></description>
    <content:encoded><![CDATA[<p>Os dashboards do Kibana e o Discover agora carregam até 25% mais rápido graças à sondagem contínua. Em vez de ficar em espera entre verificações periódicas, o Kibana agora mantém as conexões HTTP abertas e entrega os resultados das consultas do Elasticsearch no momento em que estão prontos. Em HTTP/2+ (o padrão do Kibana desde a versão 9.0), isso ocorre automaticamente, sem necessidade de configuração. Em HTTP/1, o Kibana recorre à sondagem tradicional para evitar o esgotamento do pool de conexão.</p><h2>Como o Kibana busca dados ao carregar um dashboard</h2><p>Quando um dashboard é aberto, a maioria dos painéis (internamente, chamamos esses <em>incorporáveis</em>) inicia uma ou mais consultas no Elasticsearch. Mas, em vez da simples chamada e resposta de uma busca síncrona (sync), usamos o poder da busca assíncrona (<a href="https://www.elastic.co/docs/solutions/search/async-search-api">docs async</a>).</p><p>Com a busca assíncrona, os resultados das consultas ficam disponíveis no Elasticsearch fora de qualquer requisição HTTP específica. Isso é importante porque</p><ul><li><p>torna o carregamento de dados resiliente à turbulência da rede</p></li><li><p>potencializa nosso <a href="https://www.elastic.co/docs/explore-analyze/discover/background-search">recurso de busca em segundo plano</a>, o que permite que os usuários trabalhem em outras coisas no Kibana enquanto esperam por um dashboard de longa duração ou por uma sessão do Discover</p></li></ul><p>Após a consulta inicial ser enviada, o Kibana monitora a busca para detectar quando ela está concluída e recuperar o conjunto de resultados.</p><h3>Como a sondagem tradicional afeta os tempos de carregamento do dashboard do Kibana</h3><p>Na sondagem tradicional, o Kibana envia uma consulta, fecha a conexão inicial e então verifica periodicamente a conclusão do Elasticsearch.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt093ed1a718d2f2ed/6a1710c28b73cb568118a109/2f44064a2e627866e129eb626f68ddd62230a4e2-1999x719.png" alt="Diagrama mostrando a sondagem tradicional no Kibana. A linha do tempo do Kibana mostra um curto período de conexão aberta após o envio da consulta, seguido por um longo período de espera, uma breve verificação de status e, em seguida, a entrega dos resultados. A linha do tempo do Elasticsearch executa uma consulta que se completa no meio do período de espera do Kibana, ilustrando a lacuna de coordenação que causa perda de tempo." /><p>Damos ao Elasticsearch um curto período de tempo após o envio da consulta para simplesmente completar a busca e devolver os resultados. Se a busca for concluída tão rapidamente, isso se resume a uma simples chamada e resposta. Mas para buscas mais longas, a conexão inicial é fechada e o Kibana começa a verificar periodicamente a busca para conclusão. Isso é chamado de <em>sondagem</em>.</p><h4>Desvantagens de desempenho da sondagem tradicional</h4><p>Observando a figura acima, talvez você já possa ver a desvantagem de desempenho dessa abordagem: é mais provável que a busca termine durante um dos intervalos de espera do Kibana, levando à perda de tempo.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt3685326f1aa90a1b/6a1710c30c4857892b01ab7a/ad8b80d9e8d6d774065d62e352aad47c3ddb4686-1999x719.png" alt="Diagrama da linha do tempo mostrando o custo de desempenho da sondagem tradicional. A linha do tempo do Kibana mostra um período de abertura de conexão, um longo período de suspensão, uma consulta de status e em seguida os resultados entregues. A linha do tempo do Elasticsearch mostra a consulta sendo concluída no meio do período de suspensão do Kibana, seguida por um segmento vermelho de tempo perdido — a duração desperdiçada antes de o Kibana acordar e recuperar os resultados." /><p>No pior cenário (quando uma busca é concluída no início de um período de espera), toda a duração do intervalo de sondagem será desperdiçada.</p><h4>O impacto de uma estratégia de backoff</h4><p>É prática padrão durante a sondagem aplicar uma estratégia de backoff. Isso significa que, quanto maior a duração da busca, menos frequentemente a consultamos.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt37fb76cf22647ee5/6a1710c5a929cf6fcaae0abd/77665de4a0fd166b533a2c2c55f6f28e38cf37ce-1200x338.png" alt="Gráfico de barras horizontais mostrando a programação de recuo do intervalo de sondagem do Kibana conforme a duração da consulta. Consultas com menos de 1,5 segundos usam um intervalo de aproximadamente 0,5 segundos; consultas de 1,5–5 segundos usam 1 segundo; consultas de 5–20 segundos usam aproximadamente 2,5 segundos; consultas com mais de 20 segundos utilizam um intervalo de sondagem de 5 segundos." /><p>No entanto, isso também significa que o tempo potencial perdido varia proporcionalmente com a duração da busca.</p><h4>Como intervalos de sondagem criam padrões de latência em forma de serra</h4><p>Ao combinar todos esses fatores, o tempo perdido passa a seguir um padrão em dente de serra escalonado.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd4e81306b0c9f259/6a1710c147d49c34c42d8aec/d5cd43366f62de628c3a054ffb7bf0b05d7a1390-1500x600.png" alt="Gráfico de linhas mostrando o tempo perdido em segundos versus o tempo de conclusão da consulta em segundos, formando um padrão em dente de serra onde o tempo perdido aumenta e depois cai para zero repetidamente, com picos crescendo de menos de 1 segundo para 5 segundos à medida que a duração da consulta aumenta de 0 para 30 segundos." /><p>Aqui, os picos são os piores cenários possíveis e os vales são os melhores cenários. Isso ilustra que a sondagem tradicional nos custa entre nada e a duração total do intervalo de sondagem, dependendo da duração da busca (e das condições da rede).</p><h2>Sondagem contínuas: como o Kibana elimina o tempo de espera</h2><p>O problema com a sondagem tradicional é uma falta fundamental de coordenação entre Kibana e Elasticsearch. Idealmente, o Kibana sabe imediatamente quando os resultados estão disponíveis. Então, e se invertêssemos o padrão de sondagem para que quase todo o tempo seja gasto checando o Elasticsearch e nenhum tempo seja gasto em espera?</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4566eaaec79150c7/6a1710c78b73cb1df318a10d/7edc138528dfe1310df42f393ee7279fe3c4703b-1999x713.png" alt="Diagrama da linha do tempo mostrando sondagem contínua no Kibana. A linha do tempo do Kibana é totalmente azul: a conexão permanece aberta desde o envio da consulta por meio de duas atualizações de conexão até que os resultados sejam entregues, sem períodos de descanso. A linha do tempo do Elasticsearch mostra a consulta sendo concluída e os resultados entregues imediatamente. A legenda mostra que o tempo perdido foi riscado, indicando que foi eliminado." /><p>Com esta combinação de sondagem longa e sem mais períodos de espera, os resultados são entregues assim que estiverem prontos.</p><h3>Degradação HTTP/1</h3><p>A teoria é sólida. Então, por que essa implantação do Kibana parece tão degradada quando ativamos a sondagem contínua?</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltede864738a88e1cb/6a1710c947d49c178d2d8af2/517378a73d36bd95927b81b1f912ce465b7adf4c-800x412.gif" alt="Gravação animada da tela de um painel do Kibana carregando o conjunto de dados Sample Logs Data, mostrando vários painéis sendo preenchidos em sequência, incluindo uma série temporal de códigos de resposta, um mapa dos EUA com o total de solicitações, contagem de visitantes únicos, métricas de taxa de erro HTTP e um gráfico de Sankey com dados de sistema operacional e destino das máquinas." /><p>A chave é que essa implantação está sendo executada em HTTP/1. No HTTP/1, as requisições HTTP são mapeadas 1:1 para conexões TCP. Portanto, várias solicitações de sondagem de longa duração estão monopolizando o pool de conexões finito do navegador, fazendo com que outras solicitações sejam colocadas na fila.</p><p>No HTTP/2+, por outro lado, as solicitações de rede podem compartilhar conexões TCP via multiplexação, então não enfrentamos esse problema.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5cddb4d6767a1ccf/6a1710cb839dfa5056dcffcd/f60f3a37baf5ec16c9f1773f08855e7f9e3a7491-1536x1024.png" alt="Diagrama comparativo entre HTTP/1 e HTTP/2 para a sondagem contínua do Kibana. O HTTP/1 requer uma conexão TCP por solicitação, esgotando o pool de conexões do navegador em seis conexões. O HTTP/2 multiplexa várias solicitações de sondagem em uma única conexão TCP, evitando o esgotamento do pool e mantendo o desempenho." /><p>Portanto, no HTTP/2+, a sondagem contínua é uma virtude, mas no HTTP/1 ela se torna um vício.</p><p></p><p>HTTP/1</p><p>HTTP/2+</p><p>Conexões TCP</p><p>Uma por solicitação HTTP</p><p>Multiplexado (muitas solicitações compartilham conexões)</p><p>Comportamento de sondagem contínua</p><p>Degrada o desempenho (esgotamento do pool de conexão)</p><p>Benefício total (resultados entregues imediatamente)</p><h4>Como o Kibana detecta o protocolo HTTP para sondagem ideal</h4><p>HTTP/2 é o protocolo recomendado e é o padrão do Kibana desde a versão 9.0, então seria uma pena não enviar esse aprimoramento de desempenho. Por outro lado, a experiência HTTP/1 é tão degradada que não é aceitável arriscar isso em implantações no local que ainda não atualizaram seu protocolo. A resposta é clara: precisamos detectar qual protocolo está em uso e aplicar a estratégia de sondagem ideal.</p><p>Certamente é possível que o servidor Kibana saiba qual protocolo ele utiliza. Mas há um porém: o fator limitante é o conjunto de conexões do navegador. Isso significa que o que realmente importa é o que o <em>navegador</em> utiliza.</p><p>Por causa dos proxies, nem sempre são iguais.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltc61ff0abfe101eec/6a1710cd2867144b8893e412/13e38001fc4bd3fc60cfc69114fb9098fd745906-1970x786.png" alt="Diagrama de arquitetura mostrando três componentes em uma cadeia horizontal: Kibana Server à esquerda, um Proxy opcional no centro e Kibana Client à direita. O salto de servidor para proxy é rotulado com kibana.yml server.protocol, indicando o protocolo conhecido. O salto do proxy para o cliente é rotulado com três pontos de interrogação, indicando que o protocolo nesse salto final é desconhecido e pode ser diferente." /><p>Se basearmos nossa otimização no protocolo do servidor, podemos errar de duas maneiras.</p><ol><li><p>Aplicar sondagem contínua quando não deveria e isso prejudica a experiência.</p></li><li><p>Deixar de aplicar a sondagem contínua quando necessário e perder a otimização.</p></li></ol><p>Felizmente, navegadores modernos oferecem uma forma de detectar o protocolo do último salto de rede de qualquer requisição concluída por meio do uso de um <code>PerformanceObserver</code>. Então, observamos o protocolo da primeira submissão de consulta e otimizamos com base nisso.</p>new PerformanceObserver((list) =&gt; {
  const entries = list.getEntries();
  const entry = entries.find(({ name }) =&gt; name.includes('/internal/search/'));
  if (entry) {
    this.protocolSupportsMultiplexing = ['h2', 'h3'].includes(entry.nextHopProtocol);
  }
});<h2>Resultados de laboratório: sondagem contínua vs. sondagem tradicional em Kibana</h2><p>Para validar a sondagem contínua, criamos dashboards com atrasos de consulta variando de 1 a 23 segundos e medimos os tempos de carregamento com e sem a otimização ativada. Em seguida, carregamos os dashboards com e sem sondagem contínua para medir os ganhos (nos divertimos bastante com <a href="https://github.com/kertal/race-for-the-prize">race-for-the-prize</a>).</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltba4af840d8324923/6a1710ceb339d52fe076a0b6/5f19fb45c5307a7491037fe1ad1a302728793203-1200x742.png" alt="Gráfico de barras mostrando os resultados dos testes de laboratório para a sondagem contínua do Kibana: tempo economizado em comparação com a sondagem tradicional em durações de consulta de 1 a 23 segundos. A economia de tempo varia entre quase zero e 4,9 segundos, dependendo de onde as consultas são concluídas em relação aos limites do intervalo de sondagem, confirmando o padrão de latência em dente de serra previsto pelo cronograma de espera." /><p>O padrão ecoa nosso diagrama dente de serra original. Para algumas durações de consulta, os ganhos são pequenos, enquanto para outras chegam a vários segundos.</p><h2>Conclusão</h2><p>Essa otimização substitui com sucesso a latência inerente à sondagem tradicional por uma estratégia de sondagem contínua mais eficiente. O principal desafio foi implementar essa otimização condicionalmente para evitar a degradação do desempenho em implantações HTTP/1. Resolvemos usando o <code>PerformanceObserver</code> do navegador para detectar de forma confiável o protocolo em uso no salto final da rede.</p><p>Testes laboratoriais validam a teoria, mostrando que a sondagem contínua entrega resultados assim que estão disponíveis. Em média, isso leva a uma melhoria significativa na experiência do usuário, tornando o carregamento de dados até 25% mais rápido.</p><p>Este trabalho é o passo mais recente em nosso compromisso de reduzir o tempo para obter insights para nossos usuários. Ao tornar o Kibana um proxy mais transparente para os dados do Elasticsearch, ultrapassamos os limites do desempenho dentro da nossa esfera de influência. Mais novidades em breve!</p><p>(Em 2025, Thomas Neirynk apresentou uma <a href="https://www.elastic.co/search-labs/blog/kibana-dashboard-rendering-time">excelente visão geral</a> dos métodos e da motivação por trás do aprimoramento do desempenho do dashboard do Kibana. Esta é uma atualização sobre essa iniciativa.)</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/kibana-dashboard-performance-continuous-polling</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/kibana-dashboard-performance-continuous-polling</guid>
    <category><![CDATA[Kibana]]></category>
    <dc:creator><![CDATA[Drew Tate,Matthias Wilhelm]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd4e81306b0c9f259/6a1710c147d49c34c42d8aec/d5cd43366f62de628c3a054ffb7bf0b05d7a1390-1500x600.png" length="0" type="image/png"/>
    <pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>