Precisamos da partição Swap em um servidor LAMP?

13

Precisamos realmente trocar a partição no servidor Ubuntu com o LAMP? Eu acho que não preciso disso, mas é melhor saber com certeza se não vai causar algum comportamento imprevisível.
Na verdade, meus pensamentos foram:

  • O servidor nunca hiberna
  • Se estiver trocando uma necessidade de pensar em loadbalancing / traffic shaping, etc ...

Estou certo posso desligar o swap para o servidor de produção?

Obrigado!

    
por Arman 29.11.2010 / 10:48

5 respostas

13
  

Estou certo posso desligar o swap para o servidor de produção?

Não. Sempre tenha algum espaço de troca.

Eu tentei executar um servidor de produção sem swap uma vez e cerca de uma semana depois, depois de uma atualização do Wordpress, o PHP começou a comer muito mais RAM do que tínhamos explicado. Quando você fica sem RAM e com a troca ativada, as coisas ficam mais lentas (às vezes muito, às vezes apenas um pouco, dependendo do que é colocado lá), mas você consegue se logar, encontrar o problema e tentar consertar isso.

Quando você fica sem RAM e não tem swap, os processos morrem, as coisas param e, na maior parte do tempo, sua única opção é a reinicialização. Mas até que você faça isso, as coisas provavelmente vão quebrar.

No meu mundo, o quebrado é muito pior que o lento.

É claro que se você achar que seu sistema está constantemente usando grandes porções de swap (muitas vezes ele usará alguns apenas como uma maneira de remover coisas antigas em cache), obviamente você tem um problema (" insira RAM por favor "), mas é definitivamente recomendável ter uma rede de segurança.

Em resposta ao comentário do SpamapS:

No mundo dos "websites de sucesso", você tem failovers, balanceamento de carga e outras ferramentas que permitem que uma máquina exploda e tenha efeito zero no restante do site. Mas isso exige muito dinheiro. Ter hardware redundante não é econômico para a maioria dos sites, mesmo que eles tragam dinheiro.

Eu discordo completamente do seu comentário sobre o tempo de atividade. Em uma configuração tradicional de comércio eletrônico, se as pessoas não puderem ver seu site, elas não poderão comprar de você. Isso não é apenas comércio eletrônico, tudo interesses comerciais on-line são muito mais criticados se você perder qualquer tipo de período. Eu sei porque hospedo sites e serviços para empresas e gerencio meus próprios sites. Slow = grumpy mas Down = fúria. Mesmo que você desça apenas um minuto por vez, se um usuário vê um aviso de "manutenção insuficiente" mais do que algumas vezes, eles assumem que você não consegue manter o site em dia.

Um servidor lento é menos que ideal, mas o swap não está lá para ser executado o tempo todo, é um último recurso para permitir que as coisas continuem sendo executadas enquanto você as corrige.

Você também assume que há apenas um serviço em execução na máquina. Novamente, isso pode ser verdade se você tiver muitos megabucks para dividir tudo, mas no mundo real, as coisas são agrupadas. Vários sites, daemons ssh, servidores ftp, servidores de e-mail, etc. Um processo que vaza no swap pode nem mesmo afetar outro serviço. Sem swap, tudo tem uma chance igual de terminação instantânea e aleatória. Você não tem controle sobre isso.

Claro que a troca não é a única resposta. Você precisa de monitoramento para alertá-lo quando estiver sem memória RAM, mas apenas puxar o plugue e reinicializar não é a resposta para a maioria das pessoas. Tenho certeza de que isso funciona para qualquer site multinacional pelo qual você seja responsável, mas para nós, meros mortais (que compõem a maioria da internet), fazer isso é um suicídio comercial.

    
por Oli 29.11.2010 / 11:02
5

Eu tenho que discordar de ter swap em servidores de produção.

Na minha experiência, a troca rotacional de discos torna seu sistema menos previsível e mais propenso a frustrar toda a falha do sistema. Um servidor popular de alta carga, que está fazendo qualquer coisa com um disco local lento, rapidamente se transformará em algo muito pior do que um estado de falha. Os tempos de resposta aumentarão para 100x o seu nível normal, e coisas simples como o login através do console ou do ssh podem levar alguns minutos.

O SSD swap é um caso especial e, pelo menos, removeria o tempo de busca que normalmente mata o sistema. No entanto, as gravações ainda são lentas, portanto, você ainda demorará muito tempo para se recuperar de um processo fora de controle.

Sem swap, seu servidor LAMP simplesmente irá matar processos para liberar RAM. O monitoramento adequado deve alertá-lo para isso e remover servidores da produção se processos críticos forem eliminados. O pior caso aqui é que seus métodos de login são todos eliminados e você tem que fazer um hard reset / power cycle. Este pior caso ainda é tão provável com uma máquina de troca fora de controle, mas muito mais difícil de detectar.

Se você estiver usando PHP, ative os limites de memória e monitore seus logs em busca de falhas. Aqui está um truque, defina o limite menor no seu servidor de desenvolvimento do que na produção. Se você estiver usando mod_php sob o apache, configure MaxRequestsPerChild para alguns milhares, para que o httpd morra antes de ficar muito grande com o tempo. Acima de tudo, monitore o uso da memória! Muitas vezes a memória se acumula com o tempo, e você só precisa reiniciar um serviço com vazamento periodicamente enquanto você depura o problema.

    
por SpamapS 06.12.2010 / 16:33
3

O espaço de troca é usado quando o sistema decide que precisa de memória física para processos ativos e não há memória física insuficiente disponível. Se o sistema precisar de mais recursos de memória ou espaço, as páginas inativas na memória física serão movidas para o espaço de troca, liberando a memória física para outros usos.

Esta situação acontecerá muitas vezes no servidor.

a). Um script não otimizado pode consumir grande quantidade de memória
b). Scripts como backup sempre consumirão memória enorme | c). tráfego pesado

Portanto, é uma boa prática ter algum espaço de troca.

Mais detalhes: link

    
por aneeshep 29.11.2010 / 11:13
2

O uso do swap oferecerá uma proteção adicional contra a instabilidade do servidor. Pode haver momentos em que a RAM está se esgotando e no servidor sem swap, o que pode resultar em uma falha branda.

Provavelmente estou em minoria agora, quando digo, ainda faz sentido, como costumavam recomendar, ter o dobro de troca da memória principal. Mesmo em um sistema com 96GB de RAM.

Não custa muito e, se você precisar dele um dia, você ficará feliz por ter conseguido. O motivo para ativar o swap é apenas uma análise de custo-benefício muito direta. Faça! : -)

    
por Stefano Palazzo 29.11.2010 / 11:16
0

Eu gostaria de agradecer a Oli pela bela - eu sei antiga - resposta. Eu acho que o particionamento é um tópico sempre verde! Eu concordo totalmente com a linha do post de Oli e gostaria de compartilhar este script - claro que improvável - que uso para monitorar o uso de troca de meus servidores.

Eu sempre configuro servidores e serviços para operar sem nenhuma ocorrência de troca. Quando isso acontecer, certifique-se de que algo está errado ou, na melhor das hipóteses, algo está superando seus planos iniciais.

Eu criei este script a cada meia hora no ambiente de produção. Ele vai me enviar uma notificação se o uso de swap! = 0k. Eu serei capaz de investigar / tomar ações imediatamente sobre o problema, na maioria das vezes, antes as coisas ficarem realmente erradas .

Espera que você tenha: bash, top, echo, awk e um comando de email de trabalho, sem executar nenhuma verificação.

Espero que ajude.

#!/bin/bash
CURRSWAP=$(top -b -n1 |grep Swap |awk '{print }')
ECOMM="echo $CURRSWAP means healthy, I wont take any action."
CURRDATE=$(date)
MAILDST="[email protected]"

case $CURRSWAP in
  [0]k) $ECOMM
        exit 0
        ;;
  *)    echo -e "Server: $HOSTNAME \n Date: $CURRDATE \n Current Swap partition usage: $CURRSWAP" | mail -s "Warning from $HOSTNAME" -- $MAILDST
        exit 0
        ;;
esac
exit 0
    
por Marco 27.04.2014 / 17:18