<?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/es/search-labs/author/drew-tate</link>
    </image>
    <link>https://www.elastic.co/es/search-labs/author/drew-tate</link>
    <atom:link href="https://www.elastic.co/es/search-labs/rss/author/drew-tate.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[es]]></language>
    <lastBuildDate>Fri, 18 Sep 2026 21:42:00 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Kibana reduce el tiempo de carga del dashboard hasta en un 25 %: esta es la estrategia de sondeo que hay detrás]]></title>
    <description><![CDATA[Descubre cómo Kibana usa el sondeo continuo y la detección de HTTP/2 en el navegador para reducir los tiempos de carga del dashboard hasta en un 25 %, con una transición automática a HTTP/1 en caso de que no sea posible.]]></description>
    <content:encoded><![CDATA[<p>Los dashboards de Kibana y Discover ahora se cargan hasta un 25 % más rápido gracias al sondeo continuo. En lugar de esperar entre comprobaciones periódicas, Kibana ahora mantiene abiertas las conexiones HTTP y entrega los resultados de las búsquedas de Elasticsearch en el momento en que están listos. En HTTP/2+ (el valor predeterminado de Kibana desde la versión 9.0), esto se activa automáticamente sin necesidad de configuración. En HTTP/1, Kibana recurre al sondeo tradicional para evitar el agotamiento del grupo de conexiones.</p><h2>Cómo Kibana obtiene datos al cargar un dashboard</h2><p>Cuando se abre un dashboard, la mayoría de los paneles (internamente, los llamamos <em>insertables</em>) inician una o más búsquedas de Elasticsearch. Sin embargo, en lugar de la simple llamada y respuesta de una búsqueda síncrona (sinc), usamos el poder de la búsqueda asíncrona (asinc) (<a href="https://www.elastic.co/docs/solutions/search/async-search-api">docs</a>).</p><p>Con la búsqueda asincrónica, los resultados de las consultas se mantienen disponibles en Elasticsearch fuera de cualquier solicitud HTTP en particular. Esto es importante porque</p><ul><li><p>hace que la carga de datos sea resistente a la turbulencia de la red</p></li><li><p>impulsa nuestra <a href="https://www.elastic.co/docs/explore-analyze/discover/background-search">función de búsqueda en segundo plano</a>, que permite a los usuarios seguir trabajando en otras cosas en Kibana mientras esperan a que se cargue un dashboard o una sesión de Discover que tarda mucho en cargarse</p></li></ul><p>Tras enviar la búsqueda inicial, Kibana monitorea la búsqueda para detectar cuándo está completa y recuperar el conjunto de resultados.</p><h3>Cómo el sondeo tradicional afecta los tiempos de carga del dashboard de Kibana</h3><p>En el sondeo tradicional, Kibana envía una búsqueda, cierra la conexión inicial y luego verifica periódicamente en Elasticsearch si la búsqueda ha finalizado.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt093ed1a718d2f2ed/6a1710c28b73cb568118a109/2f44064a2e627866e129eb626f68ddd62230a4e2-1999x719.png" alt="Diagrama que muestra el sondeo tradicional en Kibana. La línea de tiempo de Kibana muestra un breve período de conexión abierta después del envío de la búsqueda, seguido de un largo período de reposo, luego un breve sondeo para el estado y finalmente los resultados entregados. La línea de tiempo de Elasticsearch ejecuta una búsqueda que se completa a mitad del período de sueño de Kibana, lo que ilustra la brecha de coordinación que causa la pérdida de tiempo." /><p>Le damos a Elasticsearch un corto período de tiempo después del envío de la búsqueda para que simplemente complete la búsqueda y devuelva los resultados. Si la búsqueda se completa tan rápidamente, equivale a una simple llamada y respuesta. Pero para búsquedas más largas, la conexión inicial se cierra y Kibana comienza a verificar periódicamente la búsqueda para completarla. Esto se llama <em>sondeo</em>.</p><h4>Desventajas en el rendimiento del sondeo tradicional</h4><p>Si observamos la figura anterior, tal vez ya puedas ver el inconveniente de rendimiento de este enfoque: lo más probable es que la búsqueda termine durante uno de los intervalos de suspensión de Kibana, lo que lleva a perder tiempo.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt3685326f1aa90a1b/6a1710c30c4857892b01ab7a/ad8b80d9e8d6d774065d62e352aad47c3ddb4686-1999x719.png" alt="Diagrama de la línea de tiempo que muestra el costo de rendimiento del sondeo tradicional. La línea de tiempo de Kibana muestra un período de conexión abierta, un largo período de inactividad, un sondeo de estado y, a continuación, la entrega de los resultados. La línea de tiempo de Elasticsearch muestra que la búsqueda se completa a mitad del período de inactividad de Kibana, seguida de un segmento rojo de tiempo perdido, la duración desperdiciada antes de que Kibana se despierte y recupere los resultados." /><p>En el peor de los casos (cuando una búsqueda se completa al comienzo de un período de inactividad) se desperdiciará toda la duración del intervalo de sondeo.</p><h4>El impacto de una estrategia de retroceso</h4><p>Aplicar una estrategia de retroceso, es una práctica estándar al realizar sondeos. Esto significa que cuanto más larga sea la duración de la búsqueda, con menos frecuencia realizamos el sondeo.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt37fb76cf22647ee5/6a1710c5a929cf6fcaae0abd/77665de4a0fd166b533a2c2c55f6f28e38cf37ce-1200x338.png" alt="Gráfico de barras horizontales que muestra el cronograma de retroceso del intervalo de sondeo de Kibana según la duración de la búsqueda. Las búsquedas de menos de 1.5 segundos utilizan un intervalo de aproximadamente 0.5 segundos; las búsquedas de 1.5 a 5 segundos utilizan 1 segundo; las búsquedas de 5 a 20 segundos utilizan aproximadamente 2.5 segundos; las búsquedas de más de 20 segundos utilizan un intervalo de sondeo de 5 segundos." /><p>Sin embargo, esto también significa que el tiempo potencial perdido escala con la duración de la búsqueda.</p><h4>Cómo los intervalos de sondeo generan patrones de latencia en forma de diente de sierra</h4><p>Al unir estos factores, nuestro tiempo perdido se convierte en una función escalonada en diente de sierra.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd4e81306b0c9f259/6a1710c147d49c34c42d8aec/d5cd43366f62de628c3a054ffb7bf0b05d7a1390-1500x600.png" alt="Gráfico de líneas que muestra el tiempo perdido en segundos frente al tiempo de finalización de la búsquedas en segundos, lo que forma un patrón de diente de sierra donde el tiempo perdido aumenta y luego cae a cero repetidamente, con picos que crecen desde menos de 1 segundo hasta 5 segundos a medida que la duración de la búsqueda aumenta de 0 a 30 segundos." /><p>Aquí, los picos representan los peores escenarios posibles y los valles, los mejores. Esto muestra que el sondeo tradicional nos puede costar desde nada hasta el tiempo completo del intervalo de sondeo, dependiendo de cuánto dure la búsqueda (y las condiciones de la red).</p><h2>Sondeos continuos: cómo Kibana elimina el tiempo de espera</h2><p>El problema con los sondeos tradicionales es la falta fundamental de coordinación entre Kibana y Elasticsearch. Idealmente, Kibana sabe inmediatamente cuándo hay resultados disponibles. Entonces, ¿qué pasaría si invirtiéramos el patrón de sondeo para que casi todo el tiempo se dedique a revisar Elasticsearch y no se pierda nada?</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4566eaaec79150c7/6a1710c78b73cb1df318a10d/7edc138528dfe1310df42f393ee7279fe3c4703b-1999x713.png" alt="Diagrama de la línea de tiempo que muestra el sondeo continuo en Kibana. La línea de tiempo de Kibana es completamente azul: la conexión permanece abierta desde el envío de la búsqueda a través de dos actualizaciones de conexión hasta que se entregan los resultados, sin períodos de espera. La línea de tiempo de Elasticsearch muestra la búsqueda completada y los resultados entregados de inmediato. La leyenda muestra el tiempo perdido tachado, lo que indica que se ha eliminado." /><p>Con esta combinación de sondeos largos y sin más períodos de inactividad, los resultados se entregan no bien están listos.</p><h3>Degradación de HTTP/1</h3><p>La teoría es sólida. Entonces, ¿por qué este despliegue de Kibana parece tan degradado cuando activamos el sondeo continuo?</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltede864738a88e1cb/6a1710c947d49c178d2d8af2/517378a73d36bd95927b81b1f912ce465b7adf4c-800x412.gif" alt="Grabación de pantalla animada de un dashboard de Kibana que carga el set de datos de logs de muestra, que muestra varios paneles que se completan secuencialmente, lo que incluye una serie temporal de códigos de respuesta, un mapa de EE. UU. del total de solicitudes, el recuento de visitantes únicos, las métricas de la tasa de errores HTTP y un diagrama de Sankey de los datos del sistema operativo de la máquina y del destino." /><p>La clave es que este despliegue se está ejecutando sobre HTTP/1. En HTTP/1, las solicitudes HTTP se mapean 1:1 a conexiones TCP. Así que varias solicitudes de sondeo de larga duración están acaparando el límite de conexiones del navegador, lo que provoca que otras peticiones se pongan en cola.</p><p>En cambio, en HTTP/2+, las solicitudes de red pueden compartir conexiones TCP mediante multiplexación, así que no nos encontramos con este problema.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5cddb4d6767a1ccf/6a1710cb839dfa5056dcffcd/f60f3a37baf5ec16c9f1773f08855e7f9e3a7491-1536x1024.png" alt="Diagrama que compara HTTP/1 y HTTP/2 para el sondeo continuo de Kibana. HTTP/1 requiere una conexión TCP por cada solicitud, lo que agota el grupo de conexiones del navegador con seis conexiones. HTTP/2 multiplexa múltiples solicitudes de sondeo a través de una única conexión TCP, evitando el agotamiento del grupo y manteniendo el rendimiento." /><p>Entonces, en HTTP/2+ el sondeo continuo es una virtud, pero en HTTP/1 se convierte en un vicio.</p><p></p><p>HTTP/1</p><p>HTTP/2+</p><p>Conexiones TCP</p><p>Uno por solicitud HTTP</p><p>Multiplexado (muchas solicitudes comparten conexiones)</p><p>Comportamiento del sondeo continuo</p><p>Degradación del rendimiento (agotamiento del grupo de conexiones)</p><p>Beneficio completo (resultados entregados inmediatamente)</p><h4>Cómo Kibana detecta el protocolo HTTP para un sondeo óptimo</h4><p>HTTP/2 es el protocolo recomendado y es el predeterminado de Kibana desde la versión 9.0, así que sería una pena no enviar esta mejora de rendimiento. Por otro lado, la experiencia de HTTP/1 está tan degradada que no es aceptable arriesgarse a usarla en ningún despliegue local que aún no haya actualizado su protocolo. La respuesta es clara: necesitamos detectar qué protocolo está en uso y aplicar la estrategia de sondeo óptima.</p><p>Ciertamente es posible que el servidor de Kibana sepa de qué protocolo está hablando. Pero hay un problema: el factor limitante es el grupo de conexiones del navegador. Eso significa que lo que realmente importa es lo que el <em>navegador</em> está diciendo.</p><p>Debido a los proxies, no siempre son los mismos.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltc61ff0abfe101eec/6a1710cd2867144b8893e412/13e38001fc4bd3fc60cfc69114fb9098fd745906-1970x786.png" alt="Diagrama de arquitectura que muestra tres componentes en una cadena horizontal: el servidor Kibana a la izquierda, un proxy opcional en el centro y el cliente Kibana a la derecha. El salto del servidor al proxy está etiquetado con kibana.yml server.protocol, lo que indica el protocolo conocido. El salto del proxy al cliente está etiquetado con tres signos de interrogación, lo que indica que el protocolo en ese salto final es desconocido y puede ser diferente." /><p>Si basáramos nuestra optimización en el protocolo del servidor, podríamos equivocarnos de dos maneras diferentes.</p><ol><li><p>Aplica sondeos continuos cuando no deberíamos y degrada la experiencia.</p></li><li><p>Si no aplicamos el sondeo continuo cuando deberíamos, nos perdemos la optimización.</p></li></ol><p>Afortunadamente, los navegadores modernos proporcionan una manera de detectar el protocolo del último salto de red de cualquier solicitud completada mediante el uso de un <code>PerformanceObserver</code>. Así que nos fijamos en el protocolo de la primera búsqueda enviada y optimizamos en función de eso.</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 laboratorio: sondeo continuo frente a sondeo tradicional en Kibana</h2><p>Para validar el sondeo continuo, creamos dashboards con retardos de búsqueda que iban de 1 a 23 segundos y medimos los tiempos de carga con y sin la optimización activada. Luego cargamos los dashboards con y sin sondeo continuo para medir las ganancias (nos divertimos mucho con <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 que muestra los resultados de las pruebas de laboratorio para el sondeo continuo de Kibana: tiempo ahorrado frente al sondeo tradicional en duraciones de búsqueda de 1 a 23 segundos. Los ahorros varían entre casi cero y 4.9 segundos dependiendo de dónde se completen las búsquedas en relación con los límites del intervalo de sondeo, lo que confirma el patrón de latencia en forma de sierra predicho por el cronograma de retroceso." /><p>El patrón reproduce nuestro diagrama de diente de sierra original. Para algunas duraciones de búsqueda, las ganancias son pequeñas, mientras que para otras ascienden a varios segundos.</p><h2>Conclusión</h2><p>Esta optimización reemplaza con éxito la latencia inherente al sondeo tradicional con una estrategia de sondeo continuo más eficiente. El reto principal fue implementar esta optimización condicionalmente para evitar la degradación del rendimiento en despliegues HTTP/1. Lo solucionamos usando el <code>PerformanceObserver</code> del navegador para detectar de forma confiable el protocolo en uso en el salto final de red.</p><p>Las pruebas de laboratorio validan la teoría, muestran que el sondeo continuo arroja resultados tan pronto como están listos. En promedio, esto conduce a una mejora significativa en la experiencia del usuario, lo que hace que los datos se carguen hasta un 25 % más rápido.</p><p>Este trabajo es el último paso en nuestro compromiso por reducir el tiempo que tardan nuestros usuarios en obtener información útil. Al hacer de Kibana un proxy más transparente para los datos de Elasticsearch, superamos los límites del rendimiento dentro de nuestra esfera de influencia. Más próximamente.</p><p>(en 2025, Thomas Neirynk ofreció una <a href="https://www.elastic.co/search-labs/blog/kibana-dashboard-rendering-time">excelente visión general</a> de los métodos y la motivación detrás de la mejora del rendimiento del dashboard de Kibana. Esta es una actualización sobre esa 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>