{"id":21034,"date":"2026-08-26T18:20:23","date_gmt":"2026-08-26T16:20:23","guid":{"rendered":"https:\/\/webhosting.de\/tcp-small-queues-linux-latency-optimization-netzwerkperformance\/"},"modified":"2026-08-26T18:20:23","modified_gmt":"2026-08-26T16:20:23","slug":"tcp-filas-pequenas-linux-otimizacao-da-latencia-desempenho-da-rede","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pt\/tcp-small-queues-linux-latency-optimization-netzwerkperformance\/","title":{"rendered":"TCP Small Queues: Reduzir de forma seletiva a lat\u00eancia na rede do Linux"},"content":{"rendered":"<p>O TCP Small Queues limita, por fluxo TCP, os bytes pendentes na via de transmiss\u00e3o do Linux, reduzindo assim <strong>Lat\u00eancia<\/strong> incluindo o \u00abbufferbloat\u00bb, de forma espec\u00edfica. Vou mostrar como este mecanismo funciona no <strong>redes Linux<\/strong> O Stack mostra como definir limites adequados e quais as intera\u00e7\u00f5es que surgem com o Pacing, os QDiscs e o Controlo de Congest\u00e3o.<\/p>\n\n<h2>Pontos centrais<\/h2>\n\n<ul>\n  <li><strong>Limite de caudal<\/strong>: O TSQ limita o n\u00famero de bytes pendentes por socket TCP.<\/li>\n  <li><strong>Menos \u00abbufferbloat\u00bb<\/strong>: Filas mais curtas reduzem o RTT.<\/li>\n  <li><strong>Contrapress\u00e3o<\/strong>: As aplica\u00e7\u00f5es funcionam mais lentamente quando o limite \u00e9 atingido.<\/li>\n  <li><strong>Equidade<\/strong>: Nenhum fluxo isolado ocupa filas inteiras.<\/li>\n  <li><strong>Adaptativo<\/strong> Controlo: O limite depende da taxa e do tamanho do segmento.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp-small-queues-4739.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Como funciona o TCP Small Queues<\/h2>\n\n<p>O TSQ entra em a\u00e7\u00e3o no ponto em que os segmentos TCP s\u00e3o <strong>QDisc<\/strong> e os controladores. Quando escrevo dados num socket, o kernel verifica, antes de cada enqueue, os bytes j\u00e1 alocados para esse fluxo. Se o fluxo atingir o limite, a l\u00f3gica marca o socket como limitado e interrompe novas enqueues. S\u00f3 quando a placa de rede libertar o buffer \u00e9 que o socket pode voltar a enviar e eu posso novamente inserir dados na pilha. Esta restri\u00e7\u00e3o rigorosa mant\u00e9m a <strong>Filas de espera<\/strong> \u00e9 curto e torna os tempos de resposta mais previs\u00edveis.<\/p>\n\n<h2>Por que \u00e9 que as longas filas aumentam o tempo de resposta<\/h2>\n\n<p>Criar filas de controladores e QDisc de grande dimens\u00e3o <strong>Bufferbloat<\/strong>, sobretudo com TSO\/GSO e grandes volumes de tr\u00e1fego de sa\u00edda. Um download pesado pode encher as filas de sa\u00edda, enquanto fluxos interativos como SSH, chamadas de API ou VoIP ficam em segundo plano. A fila sobrecarregada passa ent\u00e3o a dominar a <strong>RTT<\/strong> em vez do tempo real da liga\u00e7\u00e3o. O controlo de congestionamento reage com lentid\u00e3o, porque os acks chegam tarde, e toma decis\u00f5es menos acertadas relativamente ao cwnd. O TSQ limita os bytes pr\u00e9-armazenados por fluxo, para que os pacotes pequenos e urgentes cheguem rapidamente \u00e0 linha.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp_small_queues_meeting_2974.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Um olhar por baixo do cap\u00f4: o que o kernel faz contar<\/h2>\n\n<p>Por baixo da superf\u00edcie, o kernel n\u00e3o conta \u201epacotes\u201c, mas sim bytes; mais precisamente: os bytes de mem\u00f3ria j\u00e1 colocados na fila pelo socket. O que \u00e9 determinante \u00e9 o que a pilha cont\u00e9m em termos de estruturas skbuff, incluindo <em>truesize<\/em> que tenha sido atribu\u00edda e que ainda n\u00e3o tenha sido processada pela NIC. O TSQ associa a isso um <strong>Acelerar\/Desacelerar<\/strong>- Percurso: Se um socket atingir o limite de cr\u00e9dito, a pilha define um sinalizador de limita\u00e7\u00e3o e s\u00f3 volta a chamar ap\u00f3s a conclus\u00e3o da transmiss\u00e3o (NAPI\/IRQ) <em>write_space()<\/em> para que a aplica\u00e7\u00e3o possa voltar a enviar. Este feedback \u00e9 mais r\u00e1pido do que os sinais baseados exclusivamente em perdas do controlo de congestionamento e atua antes do QDisc. Com o TSO\/GSO, o mecanismo mant\u00e9m-se eficaz, porque o limite no <em>antes de<\/em> baseia-se no or\u00e7amento de bytes subjacente \u00e0 segmenta\u00e7\u00e3o: os super-frames de grande dimens\u00e3o s\u00f3 s\u00e3o admitidos no QDisc se houver cr\u00e9dito suficiente dispon\u00edvel, o que permite limitar os picos de tr\u00e1fego.<\/p>\n\n<h2>Limites din\u00e2micos e ritmo<\/h2>\n\n<p>Beneficio do TSQ porque o limite n\u00e3o permanece est\u00e1tico, mas sim <strong>Taxa<\/strong> e tem em conta o tamanho do segmento. O objetivo \u00e9, por exemplo, cerca de um mil\u00e9simo de segundo de dados no caminho de transmiss\u00e3o por fluxo, independentemente de a velocidade ser de 100 Mbit, 1 Gbit ou 10 Gbit. Numa liga\u00e7\u00e3o r\u00e1pida, o cr\u00e9dito de bytes permitido aumenta; numa liga\u00e7\u00e3o mais lenta, diminui. Em combina\u00e7\u00e3o com o TCP-Pacing, os picos de tr\u00e1fego permanecem pequenos e as confirma\u00e7\u00f5es (Acks) s\u00e3o recebidas mais rapidamente. Desta forma, consigo uma redu\u00e7\u00e3o sens\u00edvel <strong>Picos de lat\u00eancia<\/strong>, sem reduzir desnecessariamente o d\u00e9bito.<\/p>\n\n<h2>Intera\u00e7\u00e3o por socket e entre aplica\u00e7\u00f5es<\/h2>\n\n<p>O TSQ s\u00f3 produz o seu efeito se a aplica\u00e7\u00e3o tamb\u00e9m sentir a contrapress\u00e3o. Por isso, tenho em conta defini\u00e7\u00f5es como <strong>SO_SNDBUF<\/strong>, <strong>TCP_NOTSENT_LOWAT<\/strong> e o autocorking. Uma janela de buffer de envio demasiado grande pode empurrar muitos bytes para a pilha num curto espa\u00e7o de tempo; o TSQ abranda o processo, mas a aplica\u00e7\u00e3o s\u00f3 se apercebe disso quando <em>send()<\/em> fica bloqueado ou devolve EAGAIN. Com <strong>TCP_NOTSENT_LOWAT<\/strong> ajusto a parte \u201en\u00e3o enviada\u201c no Userland e, assim, complemento o TSQ no lado do kernel. Autocorking (ou explicitamente <em>TCP_CORK<\/em>\/MSG_MORE) ajuda a agrupar pequenas grava\u00e7\u00f5es sem provocar picos de lat\u00eancia. Limites de ritmo por socket (por exemplo, atrav\u00e9s de <em>SO_MAX_PACING_RATE<\/em>) est\u00e3o em sintonia com o TSQ: a taxa suaviza a varia\u00e7\u00e3o temporal, enquanto o limite de bytes restringe a varia\u00e7\u00e3o espacial. Importante: <strong>TCP_NODELAY<\/strong> Desativa o Nagle e pode aumentar a interatividade, mas sem o TSQ aumenta o risco de picos de tr\u00e1fego; com o TSQ, tenho ambos sob controlo.<\/p>\n\n<h2>Guia pr\u00e1tico: valores TSQ relevantes<\/h2>\n\n<p>Estabele\u00e7o o contexto global com <strong>net.ipv4.tcp_limit_output_bytes<\/strong> (Sysctl). Os valores predefinidos habituais situam-se entre 128 e 262 KB por fluxo. Para muitas cargas de trabalho da Web e de API, opto por valores mais baixos, para que as respostas interativas se mantenham r\u00e1pidas. Para c\u00f3pias de seguran\u00e7a ou replica\u00e7\u00e3o, aumentei moderadamente o limite, desde que o RTT se mantenha est\u00e1vel. Quem quiser aprofundar os conhecimentos sobre a p\u00e1gina de filas encontrar\u00e1 no\u00e7\u00f5es b\u00e1sicas sobre <a href=\"https:\/\/webhosting.de\/pt\/servidor-filas-de-pacotes-estabilidade-da-rede-otimizacao-do-alojamento-latencia\/\">Filas de pacotes no servidor<\/a>, que ajudam na classifica\u00e7\u00e3o.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th><strong>Cen\u00e1rio<\/strong><\/th>\n      <th><strong>Taxa de liga\u00e7\u00e3o<\/strong><\/th>\n      <th><strong>Valor de refer\u00eancia tcp_limit_output_bytes<\/strong><\/th>\n      <th><strong>Objetivo<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>API\/HTTP muito interativa<\/td>\n      <td>100 Mbit \u2013 1 Gbit<\/td>\n      <td>64\u2013128 KB<\/td>\n      <td>baixa <strong>RTT<\/strong>, pontas curtas<\/td>\n    <\/tr>\n    <tr>\n      <td>Carga mista: Web + downloads<\/td>\n      <td>1\u201310 Gbit<\/td>\n      <td>128\u2013256 KB<\/td>\n      <td>Saldo de <strong>Rendimento<\/strong> e lat\u00eancia<\/td>\n    <\/tr>\n    <tr>\n      <td>Replica\u00e7\u00e3o\/C\u00f3pias de seguran\u00e7a<\/td>\n      <td>1\u201310 Gbit<\/td>\n      <td>256\u2013512 KB<\/td>\n      <td>fluxo em massa constante, aceit\u00e1vel <strong>Lat\u00eancia<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>WAN com RTT elevado<\/td>\n      <td>10\u2013100 Mbit<\/td>\n      <td>96\u2013192 KB<\/td>\n      <td>r\u00e1fagas mais curtas, mais justas <strong>Tacos<\/strong><\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp-small-queues-linux-latency-2748.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>QDisc e controlo de congestionamento em conjunto<\/h2>\n\n<p>O TSQ funciona na entrada do <strong>QDisc<\/strong>, enquanto algoritmos como o fq_codel gerem o congestionamento na linha. Em conjunto, reduzem as filas de espera e mant\u00eam a distribui\u00e7\u00e3o equitativa. Com <a href=\"https:\/\/webhosting.de\/pt\/tcp-bbr-controlo-de-congestionamento-otimizacao-do-servidor-web-largura-de-banda\/\">TCP BBR<\/a> beneficio-me ainda mais, porque medi\u00e7\u00f5es de RTT mais realistas conduzem a um melhor ritmo e controlo do cwnd. O CUBIC tamb\u00e9m reage de forma mais harmoniosa quando elimino tempos de enfileiramento excessivos. Assim, o d\u00e9bito cresce organicamente, enquanto o <strong>Tempo de resposta<\/strong> continua sob controlo.<\/p>\n\n<h2>Virtualiza\u00e7\u00e3o e pilhas de nuvem<\/h2>\n\n<p>Nas m\u00e1quinas virtuais, acumulam-se v\u00e1rios n\u00edveis de buffer: QDisc do convidado, filas virtio\/vhost, QDisc do anfitri\u00e3o e a placa de rede f\u00edsica. Mantenho o TSQ ativo no convidado e defino a\u00ed um limite conservador, para que n\u00e3o cheguem picos de tr\u00e1fego intensos ao anfitri\u00e3o. No hipervisor, garanto cadeias de lat\u00eancia curtas atrav\u00e9s de QDiscs justos, an\u00e9is TX moderados e um IRQ-pinning bem definido. O SR-IOV pode reduzir a lat\u00eancia, mas transfere a responsabilidade para os convidados: sem o TSQ no convidado, corre-se o risco de filas VF longas. Nos contentores, o TSQ por <em>NetNS<\/em> como de costume; atrav\u00e9s do cgroup-pacing e dos limites da CPU, evito que um vizinho ruidoso aumente indiretamente a lat\u00eancia. \u00c9 tamb\u00e9m importante prestar aten\u00e7\u00e3o ao coalescing e aos offloads no caminho do virtio: um agrupamento excessivo prolonga os acks, enquanto um agrupamento insuficiente reduz a efici\u00eancia \u2013 fa\u00e7o os ajustes de acordo com a meta de lat\u00eancia, sem ser dogm\u00e1tico.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp-small-queues-latenz-8472.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wi-Fi e sistemas incorporados: como lidar corretamente com casos especiais<\/h2>\n\n<p>Nas liga\u00e7\u00f5es Wi-Fi, o que importa \u00e9 a <strong>Agrega\u00e7\u00e3o<\/strong> na camada MAC. Se eu definir um n\u00famero insuficiente de bytes no caminho de transmiss\u00e3o, o controlador n\u00e3o consegue agrupar tantos quadros, o que reduz a efici\u00eancia. Nessas configura\u00e7\u00f5es, aumentei o limite com cuidado e verifiquei o grau de agrega\u00e7\u00e3o. As plataformas OpenWrt e incorporadas beneficiam tamb\u00e9m de percursos simplificados nos controladores e de opera\u00e7\u00f5es at\u00f3micas mais reduzidas. Testo cada ajuste sob carga de r\u00e1dio real antes de um <strong>Perfil<\/strong> desenrolar amplamente.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp_latenz_reduzieren_2837.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitoriza\u00e7\u00e3o e m\u00e9tricas que realmente contam<\/h2>\n\n<p>Eu observo o <strong>RTT<\/strong>An\u00e1lise da distribui\u00e7\u00e3o por socket e observa\u00e7\u00e3o de valores at\u00edpicos, n\u00e3o apenas dos valores m\u00e9dios. Com os comandos \u00abss\u00bb, \u00abtc\u00bb e os exportadores, leio os comprimentos das filas, as retransmiss\u00f5es e a \u00abpacing_rate\u00bb. Os programas eBPF fornecem-me eventos quando os sockets s\u00e3o limitados e voltam a ficar livres. O \u00abTime-to-First-Byte\u00bb e os percentis 95.\u00ba e 99.\u00ba mostram se o TSQ est\u00e1 a surtir efeito. Sem valores de medi\u00e7\u00e3o, qualquer <strong>Otimiza\u00e7\u00e3o<\/strong> um voo \u00e0s cegas.<\/p>\n\n<h2>Testes A\/B e de carga com resultados significativos<\/h2>\n\n<p>Medei os efeitos do TSQ de forma reproduz\u00edvel: primeiro a linha de base sem altera\u00e7\u00f5es, depois varreduras isoladas de par\u00e2metros (por exemplo, 64, 96, 128, 192 KB). Para cargas de trabalho mistas, executo fluxos paralelos (em massa + muitas solicita\u00e7\u00f5es curtas) e comparo os percentis 95 e 99 das lat\u00eancias, n\u00e3o apenas a mediana. Mesmo quando interrompo claramente as execu\u00e7\u00f5es de teste (aquecimento, janela de medi\u00e7\u00e3o, arrefecimento), os artefactos continuam a ser percet\u00edveis. Presto aten\u00e7\u00e3o \u00e0s constantes: padr\u00f5es de carga \u00fatil iguais, rota\/MTU id\u00eanticas, frequ\u00eancias de CPU do servidor e do cliente id\u00eanticas. Em liga\u00e7\u00f5es WAN, simulo atrasos\/jitter\/perdas com <em>tc netem<\/em>, para verificar se os limites do TSQ n\u00e3o atingem o teto demasiado cedo quando o BDP \u00e9 elevado. S\u00f3 quando os percentis se tornarem mais estreitos e as retransmiss\u00f5es\/perdas se mantiverem est\u00e1veis \u00e9 que incorporo os valores na produ\u00e7\u00e3o.<\/p>\n\n<h2>Otimiza\u00e7\u00e3o de hardware e detalhes dos controladores<\/h2>\n\n<p>Vou verificar as defini\u00e7\u00f5es TSO\/GSO, o buffer circular da placa de rede e o controlo de IRQ, para que <strong>TSQ<\/strong> funciona bem. An\u00e9is TX demasiado grandes prolongam a fila de espera no dispositivo; an\u00e9is demasiado pequenos reduzem a utiliza\u00e7\u00e3o do sistema. Um agrupamento grosseiro de interrup\u00e7\u00f5es atrasa as respostas de confirma\u00e7\u00e3o (Acks), enquanto um agrupamento preciso aumenta a carga da CPU. Adapto a modera\u00e7\u00e3o de forma pr\u00e1tica e, para come\u00e7ar, remeto para <a href=\"https:\/\/webhosting.de\/pt\/coalescencia-de-interrupcoes-otimizacao-da-rede-serverflux\/\">Coalesc\u00eancia de interrup\u00e7\u00f5es<\/a>. O objetivo continua a ser uma <strong>Lat\u00eancia<\/strong> com um d\u00e9bito sustent\u00e1vel.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp_small_queues_9271.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>NUMA, RSS e afinidade da CPU<\/h2>\n\n<p>Filas curtas servem de pouco se os pacotes estiverem constantemente a atravessar os limites NUMA. Associo as filas RX\/TX, atrav\u00e9s do RSS\/irqbalance, aos n\u00facleos do mesmo dom\u00ednio NUMA em que a aplica\u00e7\u00e3o est\u00e1 a ser executada. Com o XPS\/RPS, controlo quais as CPUs que assumem o trabalho de transmiss\u00e3o (TX), evitando assim saltos entre sockets. Menos falhas de cache e menos conten\u00e7\u00e3o de bloqueios ajudam indiretamente o TSQ: As confirma\u00e7\u00f5es de conclus\u00e3o chegam mais rapidamente, o socket \u00e9 \u201edesengarrafado\u201c mais cedo e n\u00e3o se verificam picos de lat\u00eancia. Quando h\u00e1 um grande n\u00famero de fluxos por anfitri\u00e3o, planeio filas suficientes e evito que v\u00e1rios fluxos intensos colidam no mesmo anel TX.<\/p>\n\n<h2>Passo a passo: verificar se o TSQ est\u00e1 ativo<\/h2>\n\n<p>Come\u00e7o por olhar para <strong>Sysctl<\/strong>: O comando `sysctl net.ipv4.tcp_limit_output_bytes` mostra o limite atual. Em seguida, utilizo o `ss -tin` para analisar sockets individuais, prestando aten\u00e7\u00e3o aos valores de `send-q` e `rtt`, e comparo fases de carga com e sem ajuste do limite. Com o iperf3, gerar carga em segundo plano e medir, em paralelo, os tempos de resposta da API, para tornar vis\u00edveis as prioridades. O comando tc -s qdisc fornece-me os n\u00fameros de pacotes e de pacotes descartados da disciplina de sa\u00edda. Se os percentis 95 e 99 permanecerem pr\u00f3ximos e o <strong>CPU<\/strong>\u2011Carga na estrutura, a escolha do limite \u00e9 adequada.<\/p>\n\n<h2>Erros comuns e anti-padr\u00f5es<\/h2>\n\n<ul>\n  <li>\u201eMais buffer = mais desempenho\u201c: isto \u00e9 verdade para testes de d\u00e9bito sem um objetivo de lat\u00eancia, mas deixa de se verificar no caso de servi\u00e7os interativos. O TSQ substitui filas sobredimensionadas por um cr\u00e9dito adaptado \u00e0s necessidades de cada fluxo.<\/li>\n  <li>\u201eO TSQ prejudica o rendimento\u201c: Quando configurado corretamente, o TSQ limita os picos de tr\u00e1fego, n\u00e3o a taxa m\u00e9dia. Em cargas de trabalho em massa, aumentei moderadamente o limite e medi os percentis, em vez de me limitar apenas ao pico em Mbit\/s.<\/li>\n  <li>\u201eO pacing por si s\u00f3 \u00e9 suficiente\u201c: o alisamento temporal \u00e9 importante, mas, sem um limite de bytes, os quadros GSO de grande dimens\u00e3o acabam por entrar na QDisc na mesma. O TSQ e o pacing complementam-se.<\/li>\n  <li>\u201eUm valor para todos\u201c: as cargas de trabalho, as liga\u00e7\u00f5es e as placas de rede diferem entre si. Trabalho com intervalos de valores e fa\u00e7o a valida\u00e7\u00e3o por ambiente.<\/li>\n  <li>\u201eApenas o TCP \u00e9 afetado\u201c: o foco est\u00e1 no TCP, mas existem outros par\u00e2metros de ajuste no sistema (por exemplo, para a carga UDP). Impedir que protocolos paralelos obstruam as mesmas filas de forma descontrolada.<\/li>\n<\/ul>\n\n<h2>Conclus\u00e3o: a lat\u00eancia sob controlo de forma espec\u00edfica<\/h2>\n\n<p>O TSQ transfere o controlo das filas de controladores para o <strong>Soquete<\/strong> e, assim, reduz os engarrafamentos diretamente na fonte. Limito os bytes pr\u00e9-armazenados por fluxo, garantindo assim respostas r\u00e1pidas, um RTT mais baixo e filas distribu\u00eddas de forma equitativa. Em combina\u00e7\u00e3o com o fq_codel e um controlo de congestionamento moderno, o tempo de resposta mant\u00e9m-se fi\u00e1vel mesmo sob carga. Trato os casos especiais de Wi-Fi e sistemas incorporados com limites adaptados e testes em condi\u00e7\u00f5es reais. Quem observa os indicadores e ajusta os limites gradualmente mant\u00e9m a <strong>Lat\u00eancia<\/strong> consistentemente baixo, sem perder rendimento desnecess\u00e1rio.<\/p>","protected":false},"excerpt":{"rendered":"<p>O TCP Small Queues no kernel do Linux limita o n\u00famero de pacotes TCP armazenados em buffer por fluxo e \u00e9 uma ferramenta poderosa para a otimiza\u00e7\u00e3o da lat\u00eancia. Descubra como o TSQ reduz o \u00abbufferbloat\u00bb e melhora os tempos de resposta dos servidores.<\/p>","protected":false},"author":1,"featured_media":21027,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21034","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"123","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"TCP Small","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21027","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/21034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/comments?post=21034"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/21034\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media\/21027"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media?parent=21034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/categories?post=21034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/tags?post=21034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}