{"id":18737,"date":"2026-04-05T11:48:15","date_gmt":"2026-04-05T09:48:15","guid":{"rendered":"https:\/\/webhosting.de\/swap-usage-server-performance-hosting-optimus\/"},"modified":"2026-04-05T11:48:15","modified_gmt":"2026-04-05T09:48:15","slug":"utilizacao-de-swap-desempenho-do-servidor-alojamento-optimus","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pt\/swap-usage-server-performance-hosting-optimus\/","title":{"rendered":"Servidor de utiliza\u00e7\u00e3o de swap: Otimizar o desempenho no alojamento"},"content":{"rendered":"<p>Vou mostrar-lhe como controlar os servidores de utiliza\u00e7\u00e3o de swap de uma forma direcionada para que as cargas de trabalho de alojamento n\u00e3o parem sob carga e n\u00e3o <strong>desempenho<\/strong> problemas com o gatilho. Explico as causas, os n\u00fameros-chave, as defini\u00e7\u00f5es de troca, as recomenda\u00e7\u00f5es de tamanho e os passos pr\u00e1ticos de afina\u00e7\u00e3o para <strong>mem\u00f3ria<\/strong> troca de alojamento.<\/p>\n\n<h2>Pontos centrais<\/h2>\n\n<ul>\n  <li><strong>Trocas<\/strong> Reduzir: Evitar a externaliza\u00e7\u00e3o agressiva<\/li>\n  <li><strong>Tamanho<\/strong> verificar: Alinhar a swap com a RAM e a carga de trabalho<\/li>\n  <li><strong>IO<\/strong> proteger: Coloca\u00e7\u00e3o de SSD, utiliza\u00e7\u00e3o consciente de Zswap\/ZRAM<\/li>\n  <li><strong>Monitoriza\u00e7\u00e3o<\/strong> estabelecer: Falhas de p\u00e1gina, kswapd, lat\u00eancia<\/li>\n  <li><strong>Cargas de trabalho<\/strong> adaptar: Balanceamento de cache e buffers de BD<\/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\/04\/serverraum-optimierung-8473.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>O que \u00e9 que a troca realmente faz - e quando \u00e9 que o torna mais lento<\/h2>\n\n<p>O Swap expande a RAM f\u00edsica movendo as p\u00e1ginas raramente utilizadas para SSD ou HDD, e protege os processos do OOM killer, o que me ajuda em situa\u00e7\u00f5es de emerg\u00eancia. <strong>Tamp\u00e3o<\/strong> d\u00e1. O Linux descarrega oportunisticamente para dar mais espa\u00e7o \u00e0s p\u00e1ginas activas e manter a cache de p\u00e1ginas, mas demasiada atividade aumenta o <strong>IO<\/strong>-carga. Assim que o sistema alterna frequentemente entre RAM e swap, existe o risco de thrashing e, portanto, uma lat\u00eancia percet\u00edvel. Especialmente com hospedagem web pesada com PHP, banco de dados e Node.js, o cache, o PHP worker e o buffer DB competem por mem\u00f3ria. Eu, portanto, mantenho a swap dispon\u00edvel como uma rede de seguran\u00e7a, mas minimizo seu uso em opera\u00e7\u00e3o normal.<\/p>\n\n<h2>Reconhecer os sintomas de uma utiliza\u00e7\u00e3o elevada de swap<\/h2>\n\n<p>Verifico primeiro <strong>livre<\/strong> -h e <strong>vmstat<\/strong>, porque altas taxas de swap-in\/swap-out indicam gargalos. Se as taxas permanecerem baixas e a RAM estiver livre, o sistema geralmente funciona normalmente e s\u00f3 usa a troca de forma oportunista. No entanto, se as taxas de falha de p\u00e1gina e a fila de IO aumentarem, a lat\u00eancia do aplicativo aumenta e as solicita\u00e7\u00f5es ficam mais lentas. Nos registos, vejo indica\u00e7\u00f5es de trabalhadores ocupados e consultas lentas que ocorrem ao mesmo tempo que os picos de swap. Para mais no\u00e7\u00f5es b\u00e1sicas sobre mem\u00f3ria virtual, remeto-o para esta introdu\u00e7\u00e3o compacta \u00e0 <a href=\"https:\/\/webhosting.de\/pt\/memoria-virtual-gestao-do-servidor-alojamento-armazenamento\/\">mem\u00f3ria virtual<\/a>, o que me ajuda na categoriza\u00e7\u00e3o.<\/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\/04\/serverperformance1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Vantagens e riscos do alojamento de troca de mem\u00f3ria<\/h2>\n\n<p>Utilizo a swap para amortecer os picos de RAM e manter os servi\u00e7os cr\u00edticos a funcionar, o que a curto prazo <strong>Falha<\/strong> \u00e9 evitado. Isto significa que as inst\u00e2ncias VPS mais pequenas podem ser geridas com menos RAM, o que pode reduzir os custos em euros, desde que a carga IO se mantenha dentro dos limites. No entanto, se for trocada demasiada quantidade, o SSD\/NVMe fica claramente atr\u00e1s da RAM e os pedidos ficam parados. Al\u00e9m disso, a compress\u00e3o (ZRAM) custa tempo de CPU, que as aplica\u00e7\u00f5es preferem utilizar para trabalho real. Portanto, a troca n\u00e3o \u00e9 um substituto para mim, mas uma rede de seguran\u00e7a que eu controlo ativamente.<\/p>\n\n<h2>Trocar: o parafuso de regula\u00e7\u00e3o mais importante<\/h2>\n\n<p>A vari\u00e1vel do kernel <strong>vm.swappiness<\/strong> (0-100, por defeito normalmente 60) controla a anteced\u00eancia com que o sistema descarrega as p\u00e1ginas, e eu reduzo-o para 10 para cargas de trabalho de alojamento. Temporariamente, testo com <code>sysctl vm.swappiness=10<\/code>, Escrevo permanentemente <code>vm.swappiness=10<\/code> em <code>\/etc\/sysctl.conf<\/code>. Em hosts SSD, isso resulta em menos trocas e mais espa\u00e7o para o cache de p\u00e1ginas. Em seguida, monitorizo o IO, as lat\u00eancias e os conjuntos de trabalho para confirmar o efeito. Se os n\u00fameros-chave permanecerem est\u00e1veis, mantenho a configura\u00e7\u00e3o e documento a altera\u00e7\u00e3o para auditorias posteriores.<\/p>\n\n<h2>Tamanho \u00f3timo de swap para servidores comuns<\/h2>\n\n<p>Ajusto o tamanho da troca de acordo com a RAM, o volume de trabalho e qualquer hiberna\u00e7\u00e3o, \u00e0 medida que encontro ficheiros demasiado grandes <strong>Mem\u00f3ria<\/strong> e os ficheiros demasiado pequenos reduzem a mem\u00f3ria interm\u00e9dia. Para servidores de alojamento t\u00edpicos sem hiberna\u00e7\u00e3o, planeio valores moderados e dou prioridade a mais RAM em vez de grandes volumes de troca. Para inst\u00e2ncias VPS escassas, 1,5-2x a RAM pode fazer sentido at\u00e9 que seja poss\u00edvel uma atualiza\u00e7\u00e3o real. Se tiver muita RAM, muitas vezes beneficia de \u00e1reas de swap mais pequenas mas dispon\u00edveis para evitar crashes. Eu uso a seguinte tabela como ponto de partida e ajusto-a de acordo com os valores medidos:<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Tamanho da RAM<\/th>\n      <th>Troca sem hiberna\u00e7\u00e3o<\/th>\n      <th>Trocar com a hiberna\u00e7\u00e3o<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>\u2264 2 GB<\/td>\n      <td>2x RAM<\/td>\n      <td>3x RAM<\/td>\n    <\/tr>\n    <tr>\n      <td>2-8 GB<\/td>\n      <td>= RAM<\/td>\n      <td>2x RAM<\/td>\n    <\/tr>\n    <tr>\n      <td>8-64 GB<\/td>\n      <td>4\u20138 GB<\/td>\n      <td>1,5x RAM<\/td>\n    <\/tr>\n    <tr>\n      <td>&gt; 64 GB<\/td>\n      <td>4 GB<\/td>\n      <td>N\u00e3o recomendado<\/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\/04\/server-swap-usage-optimierung-9342.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Coloca\u00e7\u00e3o de trocas e t\u00e9cnicas avan\u00e7adas<\/h2>\n\n<p>Prefiro ficheiros swap a parti\u00e7\u00f5es porque posso ajustar dinamicamente os tamanhos e fazer altera\u00e7\u00f5es mais rapidamente. <strong>viver<\/strong> vai. Se a \u00e1rea de troca estiver em um armazenamento SSD separado, ela competir\u00e1 menos com o sistema operacional para IO. Para VMs muito pequenas, eu uso Zswap ou ZRAM como um teste para reduzir IO, mas mantenho um olhar atento sobre a utiliza\u00e7\u00e3o da CPU. Limito o comprometimento excessivo de forma limpa e defino limites para os servi\u00e7os, de modo que nenhum processo leve a m\u00e1quina a um colapso. No final, o que conta \u00e9 um efeito mensur\u00e1vel: menos lat\u00eancia, IO mais silencioso e tempos de resposta consistentes.<\/p>\n\n<h2>Controlo: quais os n\u00fameros-chave que realmente contam<\/h2>\n\n<p>Me\u00e7o a utiliza\u00e7\u00e3o da RAM, a cache de p\u00e1ginas, a entrada\/sa\u00edda de swap, a atividade de <strong>kswapd<\/strong> e filas de IO, porque esses valores me enviam sinais logo no in\u00edcio. Se o movimento de swap aumentar, correlaciono-o com a lat\u00eancia da aplica\u00e7\u00e3o e os tempos de consulta. Tamb\u00e9m verifico falhas de p\u00e1gina menores\/maiores para reconhecer acessos de mem\u00f3ria dispendiosos. Para me ajudar a compreender as estrat\u00e9gias de buffer, utilizo este guia para <a href=\"https:\/\/webhosting.de\/pt\/servidor-utilizacao-da-memoria-ram-alojamento-cache-buffer-recursos-livres-afinacao-da-cache\/\">Utiliza\u00e7\u00e3o da mem\u00f3ria interm\u00e9dia e da cache<\/a>. S\u00f3 quando as m\u00e9tricas e os registos mostram uma press\u00e3o consistente \u00e9 que intervenho e altero as defini\u00e7\u00f5es.<\/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\/04\/swap_server_performance_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Como o kernel seleciona as p\u00e1ginas: um olhar mais profundo sobre o Reclaim<\/h2>\n\n<p>Para afinar de forma direcionada, compreendo as listas internas: o Linux distingue entre p\u00e1ginas an\u00f3nimas (heaps\/pilhas) e p\u00e1ginas suportadas por ficheiros (cache de p\u00e1ginas). Ambas est\u00e3o ligadas a listas LRU (activas\/inactivas). Se a mem\u00f3ria estiver sob press\u00e3o, o kernel tenta primeiro descartar as p\u00e1ginas inactivas, baseadas em ficheiros (rapidamente, uma vez que podem ser recarregadas a partir do disco). Se houver demasiadas p\u00e1ginas an\u00f3nimas activas, tem de as mover para a swap - o que \u00e9 mais dispendioso. Um n\u00famero elevado de <code>vm.vfs_cache_pressure<\/code> acelera a elimina\u00e7\u00e3o de dados\/in\u00f3dulos, o que liberta espa\u00e7o mas pode levar a mais acessos a ficheiros em servidores Web. Normalmente, mantenho-o em torno de 50-100 e observo como a taxa de acerto da cache e a lat\u00eancia mudam.<\/p>\n\n<p>Influencio os percursos de escrita atrav\u00e9s de <code>vm.dirty_background_bytes<\/code>\/<code>vm.dirty_bytes<\/code> (ou as variantes do r\u00e1cio). Limites de sujidade demasiado altos apenas adiam o problema e mais tarde geram grandes writebacks que atrasam a recupera\u00e7\u00e3o da swap. Eu prefiro limites baseados em bytes pois eles funcionam mais precisamente em sistemas de RAM grandes. Outro paliativo \u00e9 <code>vm.min_free_kbytes<\/code>Se esse valor for muito baixo, a recupera\u00e7\u00e3o entra em ciclos agitados; muito alto, desperdi\u00e7a RAM. Eu normalmente deixo esse valor no padr\u00e3o da distribui\u00e7\u00e3o, a menos que eu veja consistentemente \u201elow free watermarks\u201c no dmesg.<\/p>\n\n<h2>PSI e kswapd: Interpretar corretamente os indicadores principais<\/h2>\n\n<p>Para al\u00e9m das m\u00e9tricas cl\u00e1ssicas, utilizo <em>Informa\u00e7\u00e3o sobre perda de press\u00e3o<\/em> em <code>\/proc\/pressure\/memory<\/code>. Alto <code>alguns<\/code> ou <code>completo<\/code> Os valores ao longo de v\u00e1rios segundos mostram-me que as tarefas est\u00e3o \u00e0 espera de mem\u00f3ria. Este \u00e9 frequentemente o primeiro sinal antes de os utilizadores notarem a lat\u00eancia. Ao mesmo tempo, eu olho para o tempo de CPU de <strong>kswapd<\/strong>Se subir permanentemente acima de alguns por cento, o Reclaim funciona a quente. Com <code>vmstat 1<\/code> Presto aten\u00e7\u00e3o a <code>si<\/code>\/<code>portanto<\/code> (swap-in\/out) e <code>r<\/code>\/<code>b<\/code> (fila de execu\u00e7\u00e3o\/bloqueio). Consistentemente elevado <code>portanto<\/code>-juntamente com valores crescentes <code>b<\/code>-cue indicate thrashing - ent\u00e3o eu intervenho de forma consistente.<\/p>\n\n<h2>Cgroups v2 e systemd: Limitar deliberadamente a troca<\/h2>\n\n<p>Em ambientes multi-tenant ou de contentores, evito que um \u00fanico servi\u00e7o consuma todas as reservas. Com o cgroups v2, defino <code>mem\u00f3ria.max<\/code> (limite r\u00edgido), <code>mem\u00f3ria.alta<\/code> (estrangulamento suave) e <code>mem\u00f3ria.swap.max<\/code> (limite de swap). No systemd, utilizo por servi\u00e7o <code>Mem\u00f3riaMax=<\/code>, <code>Mem\u00f3riaAlta=<\/code> e <code>MemorySwapMax=<\/code> em sobreposi\u00e7\u00f5es de unidades. Isto significa que o PHP-FPM n\u00e3o pode levar todo o sistema para a swap, enquanto as bases de dados permanecem reactivas. Para rajadas, uma estreita <code>mem\u00f3ria.alta<\/code> mais moderado <code>MemorySwapMax=<\/code>, em vez de arriscar OOMs dif\u00edceis. Documentei estes limites para cada servi\u00e7o e mantenho-os actualizados no processo de revis\u00e3o.<\/p>\n\n<h2>Criar, ampliar e dar prioridade a ficheiros de troca de forma limpa<\/h2>\n\n<p>Na pr\u00e1tica, preciso de passos r\u00e1pidos e reproduz\u00edveis:<\/p>\n<ul>\n  <li>Criar ficheiro swap: <code>fallocate -l 8G \/swapfile &amp;&amp; chmod 600 \/swapfile &amp;&amp; mkswap \/swapfile<\/code><\/li>\n  <li>Ativar: <code>swapon \/swapfile<\/code>; permanentemente atrav\u00e9s de <code>\/etc\/fstab<\/code> com <code>\/swapfile nenhum swap sw,pri=5 0 0<\/code><\/li>\n  <li>Ajustar o tamanho: <code>swapoff \/swapfile<\/code>, <code>fallocate -l 12G \/swapfile<\/code>, <code>mkswap \/swapfile<\/code>, <code>swapon \/swapfile<\/code><\/li>\n  <li>M\u00faltiplos swaps: NVMe mais r\u00e1pido com maior <code>pri<\/code> dar prioridade; com <code>swapon --show --output=NOME,PRIO,SIZE,USED<\/code> controlo<\/li>\n<\/ul>\n<p>Em sistemas muito fracos em termos de IO, eu prefiro reduzir o tamanho da swap ou colocar a swap em suportes de dados mais r\u00e1pidos do que permitir que o sistema lentamente \u201etroque at\u00e9 morrer\u201c.<\/p>\n\n<h2>Zswap e ZRAM: quando a compress\u00e3o realmente ajuda<\/h2>\n\n<p>O Zswap comprime as p\u00e1ginas a serem trocadas no pool suportado por RAM e, portanto, reduz a E\/S f\u00edsica. Isso protege os SSDs, mas custa tempo de CPU. Para VMs com poucos n\u00facleos, eu testo primeiro o lz4 (compress\u00e3o r\u00e1pida e mais fraca) e observo se os picos de CPU aumentam. Eu substituo seletivamente a ZRAM pela swap cl\u00e1ssica em inst\u00e2ncias muito pequenas para permanecer quase livre de IO - eu planejo mais CPU para isso. Eu deliberadamente mantenho a compress\u00e3o pequena (por exemplo, 25-50% RAM para ZRAM) para evitar a cria\u00e7\u00e3o de novos gargalos. Assim que as cargas de trabalho ligadas \u00e0 CPU come\u00e7am a trope\u00e7ar, revejo esta otimiza\u00e7\u00e3o.<\/p>\n\n<h2>THP e fragmenta\u00e7\u00e3o: trav\u00f5es de lat\u00eancia ocultos<\/h2>\n\n<p>O Transparent Huge Pages (THP) pode ajudar com JVMs ou bases de dados, mas tamb\u00e9m pode sobrecarregar a recupera\u00e7\u00e3o e a troca em ambientes de alojamento misto. Eu uso THP em <code>enlouquecer<\/code>, para que apenas as cargas de trabalho que o usam explicitamente se beneficiem. No caso de uma fragmenta\u00e7\u00e3o de mem\u00f3ria percet\u00edvel, planeio rein\u00edcios cont\u00ednuos de servi\u00e7os de mem\u00f3ria intensiva para limpar as pilhas que foram atingidas. Para o MySQL\/MariaDB, tamb\u00e9m verifico se o buffer pool do InnoDB \u00e9 suficientemente grande em rela\u00e7\u00e3o \u00e0 mem\u00f3ria total para que a cache de p\u00e1ginas do Linux n\u00e3o passe fome - as caches duplicadas custam RAM e aumentam desnecessariamente a swap.<\/p>\n\n<h2>Anfitri\u00f5es NUMA e multi-socket<\/h2>\n\n<p>O NUMA desempenha um papel em hosts bare-metal maiores. O acesso desequilibrado \u00e0 mem\u00f3ria aumenta as lat\u00eancias e acelera a recupera\u00e7\u00e3o. Eu distribuo as cargas de trabalho entre <code>numactl --interleave=all<\/code> ou fixar servi\u00e7os espec\u00edficos por n\u00f3. Eu mantenho os servi\u00e7os cr\u00edticos que acionam muitos acessos ao cache de p\u00e1gina (por exemplo, Nginx) perto dos caminhos de dados; eu encapsulo trabalhos em lote que consomem muita mem\u00f3ria e dou a eles limites de cgroup mais r\u00edgidos, se necess\u00e1rio, para que os transbordamentos de NUMA n\u00e3o empurrem todo o sistema para a swap.<\/p>\n\n<h2>Diagn\u00f3stico de processos: quem troca realmente?<\/h2>\n\n<p>Quando as m\u00e9tricas do sistema fazem soar o alarme, identifico as causas ao n\u00edvel do processo: <code>smem -knr<\/code> mostra-me PSS\/USS (partilhas de mem\u00f3ria realistas), <code>pmap -x<\/code> a distribui\u00e7\u00e3o por segmentos. Em <code>\/proc\/\/status<\/code> Eu controlo <code>VmRSS<\/code>, <code>VmSwap<\/code> e <code>oom_score_adj<\/code>. Alto <code>VmSwap<\/code>-Os valores para padr\u00f5es pouco favor\u00e1veis ao LRU (muitas p\u00e1ginas an\u00f3nimas e pouco utilizadas) s\u00e3o candidatos a limites ou \u00e0 otimiza\u00e7\u00e3o do c\u00f3digo. Tamb\u00e9m utilizo <code>pidstat -r 1<\/code>, para ver as taxas de falha por processo e compar\u00e1-las com as lat\u00eancias da aplica\u00e7\u00e3o.<\/p>\n\n<h2>Livros de execu\u00e7\u00e3o, SLOs e n\u00edveis de escalonamento<\/h2>\n\n<p>Defino valores-limite claros por classe de anfitri\u00e3o, por exemplo: kswapd-CPU &lt; 5% numa m\u00e9dia de 5 minutos, falhas graves &lt; 50\/n\u00facleo em funcionamento normal, mem\u00f3ria PSI <code>alguns<\/code> &lt; 10% acima de 60s. Se duas m\u00e9tricas forem quebradas ao mesmo tempo, eu intervenho nesta ordem: verifico o swappiness, temporariamente estrangulo os trabalhadores\/buffers, ajusto o posicionamento e as prioridades do swap, (des)ativo a compress\u00e3o, aumento a RAM se necess\u00e1rio. Estes runbooks fazem parte da minha resposta a incidentes para que as equipas possam agir de forma reproduz\u00edvel e <strong>Lat\u00eancia<\/strong> continua sob controlo.<\/p>\n\n<h2>Resolu\u00e7\u00e3o de problemas: causas t\u00edpicas e solu\u00e7\u00f5es r\u00e1pidas<\/h2>\n\n<p>Se as taxas de troca aumentarem, verifico primeiro os servi\u00e7os que consomem muita mem\u00f3ria e limito-os com <strong>cgroups<\/strong> ou configura\u00e7\u00f5es de servi\u00e7o. Em seguida, verifico se h\u00e1 demasiados PHP workers, buffers de BD demasiado grandes ou uma cache de p\u00e1ginas demasiado pequena. Reduzo a troca, arrumo as caches tempor\u00e1rias e desloco as rota\u00e7\u00f5es de registo das horas de ponta. Se a fila de IO permanecer permanentemente alta, eu realoco a swap ou a reduzo para minimizar a concorr\u00eancia de IO. Se isso n\u00e3o for suficiente, eu aumento a RAM e me\u00e7o novamente at\u00e9 que a lat\u00eancia permane\u00e7a est\u00e1vel em um n\u00edvel baixo.<\/p>\n\n<h2>Ajustamento para PHP, bases de dados e Node.js<\/h2>\n\n<p>Com PHP, maximizo os acessos de p\u00e1gina inteira ou OPcache para que seja utilizada menos RAM para compila\u00e7\u00e3o repetida e, assim <strong>Tempo de resposta<\/strong> diminui. No MySQL\/MariaDB, equilibro o buffer pool e a cache de consulta com a cache de p\u00e1gina para evitar a duplica\u00e7\u00e3o de cache. Para o Node.js, estabele\u00e7o limites para o heap e monitorizo a recolha de lixo para que <strong>Ciclo de eventos<\/strong> n\u00e3o vacila. Tamb\u00e9m evito a fragmenta\u00e7\u00e3o da mem\u00f3ria atrav\u00e9s de implementa\u00e7\u00f5es que reiniciam regularmente os servi\u00e7os e detectam fugas. Um breve olhar em profundidade sobre o <a href=\"https:\/\/webhosting.de\/pt\/fragmentacao-de-memoria-alojamento-web-php-mysql-otimizacao-fluxo-de-bytes\/\">Fragmenta\u00e7\u00e3o da mem\u00f3ria<\/a> ajuda a detetar mais rapidamente esses problemas.<\/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\/04\/entwickler_schreibtisch_swap_5647.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Contentores e pilhas de alojamento: exemplos pr\u00e1ticos<\/h2>\n\n<p>Em ambientes de cont\u00eainer, eu defino um limite r\u00edgido de mem\u00f3ria por pod ou servi\u00e7o e permito apenas uma quantidade moderada de swap. Para o PHP-FPM, eu calculo a mem\u00f3ria por trabalhador (RSS) mais o espa\u00e7o livre para o cache de p\u00e1gina. Exemplo: 512 MB de RAM, consumo real de 30 MB\/trabalhador - ent\u00e3o 8-10 trabalhadores s\u00e3o realistas, n\u00e3o 20. Para Node.js eu defino <code>--max-old-space-size<\/code> deliberadamente abaixo do limite f\u00edsico, para que o GC n\u00e3o fique sob press\u00e3o e o kernel n\u00e3o troque agressivamente a mem\u00f3ria an\u00f3nima. Para as bases de dados, planeio or\u00e7amentos fixos, separo-as do n\u00edvel Web sempre que poss\u00edvel e dou ao SO espa\u00e7o suficiente para as caches de ficheiros.<\/p>\n\n<h2>Custos, hardware e quando atualizar a RAM<\/h2>\n\n<p>Eu calculo os valores equivalentes em euros: Se a impress\u00e3o de swap cria uma lat\u00eancia permanente, a RAM adicional justifica rapidamente o pre\u00e7o e cria uma lat\u00eancia real. <strong>Desempenho<\/strong>. O NVMe reduz a lat\u00eancia de IO, mas n\u00e3o substitui a mem\u00f3ria vol\u00e1til. Antes de expandir o hardware, optimizo a troca, os buffers e o n\u00famero de trabalhadores para aumentar a efici\u00eancia. Se a utiliza\u00e7\u00e3o se mantiver elevada, planeio um salto na RAM em fases sensatas, em vez de aumentar apenas a troca. Esta sequ\u00eancia evita maus investimentos e d\u00e1-me pontos de medi\u00e7\u00e3o claros para compara\u00e7\u00f5es posteriores.<\/p>\n\n<h2>Verificar: Trocar o servidor de utiliza\u00e7\u00e3o em 15 minutos<\/h2>\n\n<p>Come\u00e7o por <code>livre -h<\/code>, <code>vmstat 1<\/code> e verificar <strong>Troca<\/strong>-movimento, falhas de p\u00e1gina e filas de IO. Depois defini <code>vm.swappiness=10<\/code>, carga <code>sysctl<\/code> e observo as figuras-chave durante cinco minutos. Se for o caso, anoto a configura\u00e7\u00e3o e documento o estado atual. No passo seguinte, corrijo as contagens de trabalhadores e os buffers de BD que deslocam a cache de p\u00e1ginas. Por fim, crio alarmes que me avisam dos valores an\u00f3malos antes de os utilizadores darem por eles.<\/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\/04\/server-optimierung-c456.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Brevemente resumido<\/h2>\n\n<p>Utilizo o Swap como um arn\u00eas de seguran\u00e7a, mas mantenho a sua utiliza\u00e7\u00e3o baixa para que <strong>Lat\u00eancia<\/strong> n\u00e3o explode e n\u00e3o ocorrem problemas de desempenho. A maior alavanca continua a ser a troca sensata, combinada com um tamanho de swap que corresponda \u00e0 RAM e \u00e0 carga de trabalho. Eu monitorizo o kswapd, as falhas de p\u00e1gina e a fila de IO, comparo os valores com os registos da aplica\u00e7\u00e3o e actuo atempadamente. Para VPSs mais pequenos, o alojamento de swap de mem\u00f3ria alivia a press\u00e3o a curto prazo, enquanto o verdadeiro al\u00edvio vem com mais RAM. Seguindo esta sequ\u00eancia, os servidores mant\u00eam-se receptivos, reduzem o tempo de inatividade e protegem os or\u00e7amentos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Gerir corretamente os servidores de utiliza\u00e7\u00e3o de swap: Evitar problemas de desempenho com o alojamento de swap de mem\u00f3ria. Dicas para um desempenho est\u00e1vel do servidor.<\/p>","protected":false},"author":1,"featured_media":18730,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-18737","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":"436","_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":"Swap Usage Server","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":"18730","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/18737","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=18737"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/posts\/18737\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media\/18730"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/media?parent=18737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/categories?post=18737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pt\/wp-json\/wp\/v2\/tags?post=18737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}