{"id":20866,"date":"2026-08-21T15:06:21","date_gmt":"2026-08-21T13:06:21","guid":{"rendered":"https:\/\/webhosting.de\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/"},"modified":"2026-08-21T15:06:21","modified_gmt":"2026-08-21T13:06:21","slug":"otimizar-o-swappiness-do-vm-alojamento-linux-ajuste-do-servidor-swap","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pt\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/","title":{"rendered":"Definir corretamente o valor de vm.swappiness para um desempenho ideal do servidor"},"content":{"rendered":"<p>Vou mostrar-te como configurar o vm.swappiness para que os servi\u00e7os Web e de bases de dados nos servidores de alojamento respondam mais rapidamente e causem menos I\/O. Com passos claros, valores iniciais adequados e monitoriza\u00e7\u00e3o, vais tirar maior partido da RAM dispon\u00edvel e reduzir <strong>Lat\u00eancias<\/strong> e evita o swapping desnecess\u00e1rio.<\/p>\n\n<h2>Pontos centrais<\/h2>\n\n<p>Estes pontos d\u00e3o-te uma vis\u00e3o geral r\u00e1pida para um ajuste que podes aplicar imediatamente.<\/p>\n<ul>\n  <li><strong>Comportamento do Swappiness<\/strong>: Controla com que anteced\u00eancia o kernel transfere a RAM para o espa\u00e7o de troca.<\/li>\n  <li><strong>Refer\u00eancia \u00e0 carga de trabalho<\/strong>: Adaptar os valores ao tipo de aplica\u00e7\u00e3o, como uma base de dados ou a Web.<\/li>\n  <li><strong>Testar temporariamente<\/strong>: Verificar primeiro em tempo real e, s\u00f3 depois, definir de forma definitiva.<\/li>\n  <li><strong>Disposi\u00e7\u00e3o do swap<\/strong>: Ter em conta a dimens\u00e3o, o contexto e as prioridades.<\/li>\n  <li><strong>Monitoriza\u00e7\u00e3o<\/strong>: Monitorizar e ajustar a E\/S, a RAM e os tempos de resposta.<\/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\/optimale-servereinstellung-5932.png\" alt=\"Servidor configurado de forma ideal para um desempenho excecional\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>O que \u00e9 o vm.swappiness e como funciona<\/h2>\n\n<p>O par\u00e2metro do kernel <strong>vm.swappiness<\/strong> define o grau de agressividade com que o Linux transfere p\u00e1ginas de mem\u00f3ria da RAM para a \u00e1rea de swap. Podes encontrar o valor atual no pseudo-sistema de ficheiros em \/proc\/sys\/vm\/swappiness e alter\u00e1-lo em tempo de execu\u00e7\u00e3o ou de forma permanente. Um valor elevado leva a uma transfer\u00eancia mais precoce para a \u00e1rea de swap, enquanto um valor baixo mant\u00e9m o conte\u00fado na RAM por mais tempo. O objetivo \u00e9 alcan\u00e7ar um bom equil\u00edbrio entre a utiliza\u00e7\u00e3o da RAM, a cache de p\u00e1ginas e um comportamento controlado da \u00e1rea de swap. Tenho sempre em mente que a RAM \u00e9 muito mais r\u00e1pida do que qualquer SSD, por isso prefiro <strong>Mem\u00f3ria de trabalho<\/strong> claramente antes do swap.<\/p>\n\n<h2>Por que \u00e9 que a Swappiness \u00e9 importante nos servidores de alojamento<\/h2>\n\n<p>Nos servidores web e de aplica\u00e7\u00f5es, a configura\u00e7\u00e3o de <strong>Trocas<\/strong> sobre o tempo de resposta e o rendimento. A troca agressiva de mem\u00f3ria gera uma carga adicional de E\/S e atrasa as consultas, sobretudo em cargas de trabalho com grande volume de dados de base de dados. Por outro lado, valores demasiado baixos acarretam o risco de ocorr\u00eancias de OOM posteriores, que encerram os processos abruptamente. Por isso, al\u00e9m da RAM e do espa\u00e7o de swap, avalio tamb\u00e9m picos de carga t\u00edpicos, caches e padr\u00f5es de consultas. Quem reduz as lat\u00eancias evita os solavancos e mant\u00e9m as transa\u00e7\u00f5es visivelmente <strong>l\u00edquido<\/strong>.<\/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\/servermeeting_swappiness_3847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Recomenda\u00e7\u00f5es consoante a carga de trabalho<\/h2>\n\n<p>Raramente existe um valor \u00fanico que se adapte a todos os cen\u00e1rios; por isso, come\u00e7o com intervalos comprovados na pr\u00e1tica e, depois, fa\u00e7o ajustes com base nos dados de medi\u00e7\u00e3o. As bases de dados beneficiam de configura\u00e7\u00f5es muito baixas, enquanto os servidores web puros suportam frequentemente valores um pouco mais elevados. Os sistemas de teste ou de desenvolvimento podem funcionar mais pr\u00f3ximos do padr\u00e3o, porque a facilidade de utiliza\u00e7\u00e3o desempenha um papel mais importante. Utilizo o esquema seguinte como ponto de partida pragm\u00e1tico para <strong>Hospedagem<\/strong>-Cargas de trabalho. Depois, analiso a E\/S, a utiliza\u00e7\u00e3o da mem\u00f3ria de swap e os tempos de resposta, e fa\u00e7o os ajustes necess\u00e1rios consoante as necessidades.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Carga de trabalho<\/th>\n      <th>Swappiness recomendado<\/th>\n      <th>Objetivo<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>Bases de dados<\/strong> (MySQL, PostgreSQL)<\/td>\n      <td>0\u201310<\/td>\n      <td>Manter a mem\u00f3ria tamp\u00e3o na RAM, manter as lat\u00eancias baixas<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Em tempo real\/baixa lat\u00eancia<\/strong><\/td>\n      <td>0\u201310<\/td>\n      <td>Evitar picos de E\/S atrav\u00e9s do swap<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Servidor Web<\/strong> com caches<\/td>\n      <td>10\u201320 (em alguns casos, 10\u201330)<\/td>\n      <td>Transferir p\u00e1ginas inativas para o disco, manter os pedidos ativos na RAM<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Desenvolvimento\/Testes<\/strong><\/td>\n      <td>30\u201360<\/td>\n      <td>Conforto e estabilidade acima da lat\u00eancia<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Verificar o valor atual<\/h2>\n\n<p>Antes de alterar os valores, leio o estado e registo o <strong>Linha de base<\/strong>. Para isso, utilizo o comando `cat \/proc\/sys\/vm\/swappiness` ou `sysctl vm.swappiness`; ambas as op\u00e7\u00f5es apresentam um valor como 60. Paralelamente, verifico a utiliza\u00e7\u00e3o da RAM e do espa\u00e7o de swap com o comando `free -h`. Com o comando `swapon \u2013show`, identifico o tamanho, a prioridade e o suporte dos dispositivos de swap ativos. Estes dados iniciais ajudam-me a avaliar os efeitos posteriormente <strong>atribuir<\/strong> ser capaz de o fazer.<\/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\/server-optimierung-swappiness-4287.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Fazer testes tempor\u00e1rios em vez de alterar de forma definitiva logo de in\u00edcio<\/h2>\n\n<p>Vou instalar o Swappiness primeiro, a t\u00edtulo experimental, para ver as rea\u00e7\u00f5es em condi\u00e7\u00f5es reais <strong>Carga<\/strong> A ver. O comando sysctl vm.swappiness=10 tem efeito imediato, mas s\u00f3 se mant\u00e9m at\u00e9 ao rein\u00edcio. Durante os testes, observo o top ou o htop, verifico o vmstat e o iostat e medo os tempos de resposta dos servi\u00e7os. Se a taxa de swap diminuir e as lat\u00eancias se mantiverem est\u00e1veis, prossigo com passos razo\u00e1veis. S\u00f3 quando as m\u00e9tricas forem convincentes \u00e9 que registo o valor <strong>permanente<\/strong> fixo.<\/p>\n\n<h2>Configurar de forma permanente<\/h2>\n\n<p>Se o valor do teste estiver correto, insiro-o numa configura\u00e7\u00e3o sysctl e atualizo as defini\u00e7\u00f5es. No ficheiro \/etc\/sysctl.conf, acrescento a linha vm.swappiness=10 e ativo-a com o comando sysctl -p. Para maior clareza, prefiro criar um ficheiro pr\u00f3prio em \/etc\/sysctl.d\/, por exemplo 99-swappiness.conf, e carreg\u00e1-lo com o comando sysctl \u2013system. Isto facilita a gest\u00e3o de vers\u00f5es e a integra\u00e7\u00e3o em processos de automatiza\u00e7\u00e3o. Esta publica\u00e7\u00e3o fornece uma vis\u00e3o geral mais aprofundada sobre par\u00e2metros relacionados: <a href=\"https:\/\/webhosting.de\/pt\/ajuste-do-sysctl-para-otimizar-o-desempenho-do-servidor-de-alojamento-web\/\">ajuste do sysctl<\/a>, que me ajuda a organizar as altera\u00e7\u00f5es e <strong>Clareza<\/strong> traz.<\/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\/serverperformance_8432.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tamanho da \u00e1rea de troca, disposi\u00e7\u00e3o da mem\u00f3ria e suportes de dados<\/h2>\n\n<p>A \u00abswappiness\u00bb nunca atua isoladamente, por isso avalio a dimens\u00e3o e a localiza\u00e7\u00e3o do <strong>Troca<\/strong> sempre. Um espa\u00e7o de swap insuficiente enche-se rapidamente, enquanto um espa\u00e7o de swap sobredimensionado prolonga as fases de E\/S sob press\u00e3o. Num SSD ou NVMe, o swap \u00e9 mais r\u00e1pido do que num HDD, mas a RAM continua a estar v\u00e1rias ordens de grandeza \u00e0 frente. A utiliza\u00e7\u00e3o de v\u00e1rios dispositivos de swap com prioridades ajuda a utilizar primeiro o suporte mais r\u00e1pido. Quem quiser aprofundar-se nas vantagens e desvantagens encontrar\u00e1 nesta vis\u00e3o geral sobre <a href=\"https:\/\/webhosting.de\/pt\/o-swap-e-util-no-alojamento-ou-prejudica-o-desempenho-ramboost\/\">Mem\u00f3ria virtual no alojamento<\/a> reflex\u00f5es \u00fateis para a <strong>Pr\u00e1tica<\/strong>.<\/p>\n\n<h2>Fluxo de trabalho na cl\u00ednica: passo a passo<\/h2>\n\n<p>Come\u00e7o por fazer um balan\u00e7o da situa\u00e7\u00e3o: registo o valor atual do Swappiness, a utiliza\u00e7\u00e3o da RAM e do espa\u00e7o de swap, bem como a utiliza\u00e7\u00e3o da CPU e das E\/S, e guardo-os como <strong>Refer\u00eancia<\/strong> Salvar. Em seguida, classifico a carga de trabalho: principalmente bases de dados, Web com cache, opera\u00e7\u00e3o mista ou em contentores. Depois, defino um valor-alvo: para bases de dados, 0\u201310; para a Web, geralmente 10\u201320; para cargas mistas, vou avan\u00e7ando com cautela. Defino o valor temporariamente, observo v\u00e1rias fases de carga e comparo m\u00e9tricas. Se o resultado for consistente, fixo o valor, documento a altera\u00e7\u00e3o e verifico-a ap\u00f3s atualiza\u00e7\u00f5es do kernel, do hardware ou <strong>Liberta\u00e7\u00e3o<\/strong>-Mudar novamente.<\/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\/serverperformance_vm_4512.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Cen\u00e1rios espec\u00edficos: contentores, m\u00e1quinas virtuais e nuvem<\/h2>\n\n<p>Em contentores e m\u00e1quinas virtuais, aumento o valor de swappiness ao n\u00edvel do anfitri\u00e3o e do convidado <strong>em conjunto<\/strong> . As plataformas de orquestra\u00e7\u00e3o, como o Kubernetes, beneficiam geralmente de configura\u00e7\u00f5es muito baixas nos n\u00f3s de trabalho, para manter baixas as lat\u00eancias dos pods. Nas m\u00e1quinas virtuais, defino internamente valores adequados, mas certifico-me de que o hipervisor n\u00e3o atua de forma contr\u00e1ria. Em configura\u00e7\u00f5es el\u00e1sticas na nuvem, valores conservadores ajudam a suavizar os picos at\u00e9 que a escalabilidade entre em a\u00e7\u00e3o. Evito que um \u00fanico contentor, devido a um comportamento intensivo de swap, afete toda a <strong>Plataforma<\/strong> abranda.<\/p>\n\n<h2>Monitoriza\u00e7\u00e3o e resolu\u00e7\u00e3o de problemas<\/h2>\n\n<p>Consido que os sinais de alerta t\u00edpicos de um valor inadequado de swappiness s\u00e3o uma elevada carga de E\/S com RAM ainda dispon\u00edvel, tempos de resposta inst\u00e1veis e consultas \u00e0 base de dados lentas. Verifico esses padr\u00f5es com o vmstat, o iostat, o sar e as m\u00e9tricas da minha pilha de observabilidade. Se o sistema apresentar uma utiliza\u00e7\u00e3o elevada da mem\u00f3ria de troca apesar de haver RAM livre, costumo reduzir o valor de swappiness. Se observar registos de OOM ou falhas devido \u00e0 falta de RAM, aumentei moderadamente o valor de swappiness ou ajusto a configura\u00e7\u00e3o da mem\u00f3ria de troca. A tabela seguinte classifica os sintomas de uma prov\u00e1vel <strong>Causa<\/strong> e indica uma primeira orienta\u00e7\u00e3o.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Sintoma<\/th>\n      <th>Causa prov\u00e1vel<\/th>\n      <th>Pr\u00f3ximo passo<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>E\/S elevada<\/strong> com RAM dispon\u00edvel<\/td>\n      <td>N\u00edvel de swappiness demasiado elevado<\/td>\n      <td>Reduzir o valor, medir o impacto<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Eventos OOM<\/strong> sob carga<\/td>\n      <td>O Swappiness est\u00e1 demasiado baixo ou h\u00e1 pouca mem\u00f3ria de swap<\/td>\n      <td>Aumentar o valor, verificar o tamanho do swap<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Consultas lentas<\/strong> apesar da reserva da CPU<\/td>\n      <td>Buffer da base de dados transferido para a mem\u00f3ria externa<\/td>\n      <td>Valor entre 0 e 10, analisar o buffer DB<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Picos de carga<\/strong> sem estrangulamento do processador<\/td>\n      <td>Picos de E\/S induzidos pelo swap<\/td>\n      <td>Reduzir o Swappiness, verificar os acertos na cache<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Compreender m\u00e9tricas de granularidade fina<\/h2>\n\n<p>Para avaliar objetivamente a \u00abswappiness\u00bb, analiso mais detalhadamente os contadores do kernel. Em \/proc\/vmstat, os valores pswpin e pswpout indicam o n\u00famero de p\u00e1ginas lidas e libertadas, respetivamente. Os valores pgscan_kswapd_* e pgsteal_* mostram o grau de agressividade com que o Reclaimer opera. Se os pgmajfault (erros graves de p\u00e1gina) se acumularem, isso indica recargas com elevada carga de E\/S. Analiso estes valores repetidamente ou com os comandos `sar -B` e `sar -W`, para observar as taxas e n\u00e3o apenas instant\u00e2neos. Com o comando vmstat 1, identifico si\/so (Swap in\/out) e consigo associar picos a eventos reais. Al\u00e9m disso, o diret\u00f3rio \/proc\/pressure\/memory fornece uma estimativa do grau em que as tarefas s\u00e3o afetadas pela press\u00e3o de mem\u00f3ria <strong>bloco<\/strong> (PSI). Se esses valores subirem parcialmente ou totalmente, tenho uma indica\u00e7\u00e3o clara de que o processo de recupera\u00e7\u00e3o est\u00e1 a ser demasiado agressivo ou de que o n\u00edvel de swappiness n\u00e3o \u00e9 adequado.<\/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\/serverperformance-8734.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Swappiness 0 vs. 1: o que o kernel realmente faz<\/h2>\n\n<p>Muitas vezes, parte-se do princ\u00edpio de que Swappiness=0 desativa completamente o swap. Isso n\u00e3o \u00e9 verdade. O valor 0 indica ao kernel que deve evitar o swap tanto quanto poss\u00edvel e utiliz\u00e1-lo apenas em caso de verdadeira press\u00e3o sobre a mem\u00f3ria. Na pr\u00e1tica, um valor entre 1 e 10 \u00e9 suficiente para obter um comportamento muito conservador, enquanto o valor 0, em algumas vers\u00f5es, pode ocasionalmente levar a fases de recupera\u00e7\u00e3o tardias, mas intensas. Para servi\u00e7os em que a lat\u00eancia \u00e9 cr\u00edtica, costumo definir valores entre 1 e 5 e observar se os valores de pswpout\/pswpin permanecem praticamente nulos. Se, com o valor 0, ocorrerem eventos OOM durante picos de carga, aumentei ligeiramente o valor para que o kernel alivie a press\u00e3o mais cedo e de forma suave, em vez de o fazer de forma abrupta <strong>invadir<\/strong>.<\/p>\n\n<h2>Utilizar o Zswap e o ZRAM de forma eficaz<\/h2>\n\n<p>Para al\u00e9m do swap cl\u00e1ssico em disco, utilizo o Zswap ou o ZRAM, consoante o perfil. O Zswap comprime as p\u00e1ginas transferidas para a mem\u00f3ria de swap e mant\u00e9m-nas inicialmente na RAM, antes de as enviar para o disco, se necess\u00e1rio. Isto reduz as opera\u00e7\u00f5es de E\/S e suaviza as lat\u00eancias, mas consome recursos da CPU. Em m\u00e1quinas com uma forte reserva de CPU, isto \u00e9 um <strong>mais lucrativo<\/strong> Compromisso. O ZRAM disponibiliza a \u00e1rea de troca comprimida diretamente na RAM \u2013 ideal para cargas com picos de atividade ou m\u00e1quinas virtuais muito pequenas, nas quais prefiro utilizar RAM comprimida em vez de E\/S lenta. Importante: opto conscientemente por um dos conceitos e defino as prioridades de forma a que o caminho mais r\u00e1pido seja atendido em primeiro lugar. A \u00abswappiness\u00bb continua a ser um instrumento de controlo: mesmo com o Zswap\/ZRAM, pretendo evitar ondas de recupera\u00e7\u00e3o desnecess\u00e1rias.<\/p>\n\n<h2>Cache de p\u00e1ginas, vfs_cache_pressure e acertos de cache<\/h2>\n\n<p>O Swappiness interage com o Page Cache, que mant\u00e9m ficheiros e inodes na RAM. Com o vm.vfs_cache_pressure, controlo o grau de agressividade com que o kernel esvazia estes caches em rela\u00e7\u00e3o a p\u00e1ginas an\u00f3nimas. Valores demasiado elevados fazem com que os caches de metadados desapare\u00e7am demasiado depressa, o que abranda os servidores Web. Normalmente, come\u00e7o com valores entre 50 e 100, avalio as taxas de acerto do cache e observo como se comportam as lat\u00eancias nos recursos est\u00e1ticos e nas respostas da API. O objetivo \u00e9 manter os conte\u00fados mais utilizados na RAM, sem que as p\u00e1ginas raramente utilizadas sobrecarreguem a mem\u00f3ria. Se a taxa de acertos se mantiver boa e a E\/S baixa, significa que o equil\u00edbrio est\u00e1 correto; caso contr\u00e1rio, ajusto a swappiness e o vfs_cache_pressure no <strong>Tandem<\/strong>.<\/p>\n\n<h2>Evitar o \u00abdirty writeback\u00bb e os picos de E\/S<\/h2>\n\n<p>Os percursos de grava\u00e7\u00e3o influenciam as lat\u00eancias, tal como o swap. Com os par\u00e2metros vm.dirty_background_ratio\/bytes e vm.dirty_ratio\/bytes, defino a quantidade de cache sujo que \u00e9 criada antes de o kernel proceder \u00e0 grava\u00e7\u00e3o. Prefiro *_bytes em vez de percentagens para definir limites m\u00e1ximos \u2013 especialmente em configura\u00e7\u00f5es com grande capacidade de RAM, nas quais as percentagens podem gerar enormes picos de writeback. Objetivo: grava\u00e7\u00e3o cont\u00ednua e plane\u00e1vel, em vez de picos espor\u00e1dicos que, juntamente com o swap, geram bloqueios de E\/S. Verifico o iostat e as filas de grava\u00e7\u00e3o e mantenho os valores de forma a que os SSD\/NVMe estejam constantemente ocupados, mas n\u00e3o <strong>atropelar<\/strong> tornar-se.<\/p>\n\n<h2>NUMA, Zone Reclaim e hosts de grande dimens\u00e3o<\/h2>\n\n<p>Em sistemas com NUMA, a localiza\u00e7\u00e3o da mem\u00f3ria \u00e9 importante. Se o vm.zone_reclaim_mode estiver ativo, o kernel pode recuperar mem\u00f3ria de forma mais agressiva no n\u00f3 NUMA local, o que pode provocar picos indesejados de recupera\u00e7\u00e3o de mem\u00f3ria. Para muitas cargas de trabalho de alojamento, desativo a recupera\u00e7\u00e3o de zona e deixo a localiza\u00e7\u00e3o a cargo do agendador, para obter um comportamento mais est\u00e1vel. Al\u00e9m disso, verifico as Transparent Huge Pages (THP): As bases de dados reagem frequentemente melhor a THP=never ou madvise, porque a desfragmenta\u00e7\u00e3o n\u00e3o planeada e as atribui\u00e7\u00f5es de THP podem provocar picos de lat\u00eancia. O swappiness pode ser perfeito \u2013 se as pol\u00edticas de THP ou NUMA interferirem, as <strong>Treinador<\/strong>.<\/p>\n\n<h2>Detalhes sobre os cont\u00eaineres e os cgroups<\/h2>\n\n<p>Com o Cgroups v2, al\u00e9m do host-swappiness, tenho outras op\u00e7\u00f5es de ajuste: o `memory.high` promove uma recupera\u00e7\u00e3o suave, o `memory.max` define limites m\u00e1ximos r\u00edgidos e o `memory.swap.max` limita a utiliza\u00e7\u00e3o do swap por carga de trabalho. Desta forma, evito que determinados contentores abrandem o anfitri\u00e3o atrav\u00e9s do swap. Defino valores baixos de swappiness no n\u00f3 e atribuo prioridade \u00e0s cargas de trabalho cr\u00edticas atrav\u00e9s do `memory.low`, para que os seus conjuntos ativos permane\u00e7am mais tempo na RAM. No Kubernetes, presto aten\u00e7\u00e3o \u00e0 forma como o n\u00f3 lida com o swap e testo as altera\u00e7\u00f5es primeiro em pools fora de produ\u00e7\u00e3o. O importante \u00e9 a vis\u00e3o global: os par\u00e2metros do anfitri\u00e3o, os limites do Cgroup e o orquestrador t\u00eam de estar em sintonia; caso contr\u00e1rio, a press\u00e3o apenas se desloca de um n\u00edvel para o <strong>outros<\/strong>.<\/p>\n\n<h2>Implementa\u00e7\u00e3o, automatiza\u00e7\u00e3o e reca\u00edda<\/h2>\n\n<p>Implemento as altera\u00e7\u00f5es no Swappiness de forma controlada, tal como qualquer otimiza\u00e7\u00e3o de desempenho: primeiro num pequeno grupo de n\u00f3s praticamente id\u00eanticos (Canary) e, depois, de forma gradual a um conjunto mais vasto. O systemd-sysctl ou a gest\u00e3o de configura\u00e7\u00f5es integram os valores de forma reprodut\u00edvel. Documento os valores iniciais e finais, os momentos, os hosts envolvidos e <strong>M\u00e9tricas<\/strong>. Para o caso de uma reca\u00edda, planeio antecipadamente a altera\u00e7\u00e3o inversa (por exemplo, sysctl vm.swappiness=60) e guardo os ficheiros sysctl anteriores. Durante as janelas de manuten\u00e7\u00e3o, avalio deliberadamente cen\u00e1rios t\u00edpicos de carga, para n\u00e3o confundir as altera\u00e7\u00f5es com flutua\u00e7\u00f5es relacionadas com a hora do dia ou com o tr\u00e1fego. S\u00f3 assim as decis\u00f5es mant\u00eam a sua fiabilidade e s\u00e3o consensuais na equipa <strong>compreens\u00edvel<\/strong>.<\/p>\n\n<h2>Equ\u00edvocos comuns e anti-padr\u00f5es<\/h2>\n\n<ul>\n  <li><strong>\u201eSwappiness=0 desativa o swap\u201c<\/strong>: N\u00e3o, o kernel continua a utilizar a mem\u00f3ria de swap \u2013 mas de forma muito moderada.<\/li>\n  <li><strong>\u201eQuanto mais swap, mais seguro \u00e9\u201c<\/strong>: Um uso excessivo da mem\u00f3ria de swap prolonga os per\u00edodos de carga elevada e mascara os estrangulamentos de RAM, em vez de os resolver.<\/li>\n  <li><strong>\u201eCom o NVMe, o swapping n\u00e3o faz diferen\u00e7a\u201c<\/strong>: O NVMe \u00e9 r\u00e1pido, mas v\u00e1rias ordens de grandeza mais lento do que a RAM. As lat\u00eancias continuam a ser percet\u00edveis.<\/li>\n  <li><strong>\u201eUm valor para todos os servidores\u201c<\/strong>: As cargas de trabalho variam bastante. Sem medi\u00e7\u00e3o, o ajuste fica ao acaso.<\/li>\n  <li><strong>\u201eO Swappiness resolve qualquer problema de lat\u00eancia\u201c<\/strong>: Muitas vezes, os problemas prendem-se com os acertos na cache, o writeback, o THP, os planos de consulta ou os percursos de rede.<\/li>\n<\/ul>\n\n<h2>Resumo para um in\u00edcio r\u00e1pido<\/h2>\n\n<p>Normalmente, defino o vm.swappiness para servidores Web entre 10 e 20 e para bases de dados entre 0 e 10, testo o efeito e observo a E\/S, as lat\u00eancias e <strong>Troca<\/strong>-Propor\u00e7\u00e3o. Defino o valor final atrav\u00e9s do sysctl no ficheiro \/etc\/sysctl.d\/ e mantenho as altera\u00e7\u00f5es documentadas. Paralelamente, garanto uma configura\u00e7\u00e3o de swap adequada: tamanho adequado, suporte r\u00e1pido, prioridades sensatas. No que diz respeito \u00e0 press\u00e3o de mem\u00f3ria, tenho tamb\u00e9m em conta o Page Cache e o seu comportamento; esta vis\u00e3o geral fornece uma boa introdu\u00e7\u00e3o ao tema <a href=\"https:\/\/webhosting.de\/pt\/servidor-despejo-de-cache-de-pagina-linux-memoria-impressao-otimizacao-insight\/\">Expuls\u00e3o da cache de p\u00e1ginas<\/a>, que me ajuda na an\u00e1lise das causas e <strong>Contexto<\/strong> . Com este procedimento, consigo tempos de resposta fi\u00e1veis, evito picos de paging e utilizo a mem\u00f3ria RAM dispon\u00edvel de forma eficaz.<\/p>","protected":false},"excerpt":{"rendered":"<p>Descubra como otimizar o vm.swappiness de forma espec\u00edfica para o seu servidor de alojamento Linux e melhorar significativamente o desempenho do servidor atrav\u00e9s de um ajuste adequado da \u00e1rea de troca do Linux.<\/p>","protected":false},"author":1,"featured_media":20859,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20866","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":"143","_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":"vm.swappiness","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":"20859","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/20866","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=20866"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/20866\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media\/20859"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media?parent=20866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/categories?post=20866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/tags?post=20866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}