Comecei alguns servidores no EC2 e eles não têm troca.
Estou fazendo algo errado ou é que as máquinas simplesmente não têm?
Comecei alguns servidores no EC2 e eles não têm troca.
Estou fazendo algo errado ou é que as máquinas simplesmente não têm?
Respostas:
Você está certo, as imagens do Ubuntu EC2 EBS não vêm com espaço de troca configurado ( pelo menos para 11.04 ). As imagens "regulares" do tipo de instância têm uma partição de troca, embora apenas 896 MB na que eu testei.
Se algum processo explodir e você não tiver espaço para troca, o servidor poderá parar por um bom tempo antes que o assassino do OOM entre em ação, enquanto que com a troca, apenas fica lento. Por esse motivo, eu sempre gosto de ter espaço de troca, mesmo com RAM suficiente. Aqui estão as suas opções:
Crie um volume EBS (2-4 vezes o tamanho da sua RAM), anexe-o à sua instância (eu gosto de chamá-lo de / dev / xvdm para "memória") sudo mkswap /dev/xvdm
, adicione-o ao fstab sudo swapon -a
e você estará pronto . Já fiz isso antes e funciona bem, mas provavelmente é um pouco mais lento que o armazenamento de instância, porque passa pela rede.
Ou você pode reparticionar seu disco para adicionar uma partição de troca, embora isso possa exigir a criação de uma nova AMI. Não consegui fazer isso em uma instância em execução, porque não consigo desmontar o sistema de arquivos raiz e nem tenho acesso ao dispositivo de disco (/ dev / xvda), apenas à partição (xvda1).
Ou você pode criar um arquivo de troca. Esta é a minha solução preferida agora.
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
sudo chmod 600 /var/swapfile &&
sudo mkswap /var/swapfile &&
echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
sudo swapon -a
Feito. :) Eu sei que muitas pessoas se sentem mal por usar arquivos em vez de partições, mas certamente funciona bem como espaço de troca de emergência.
A melhor localização para trocar IMHO é a loja da instância. Por quê? A AWS não cobra por E / S na loja da instância. Além disso, o repositório de instâncias é mais eficiente que o EBS em muitos casos. Apenas certifique-se de ter um script que recrie o arquivo de permuta caso pare a instância. Reinicializações são boas. Por que oh por que não está lá por padrão?
Vamos localizar a loja da instância.
root@domU-**-**-**-**-**-**:/var/log# fdisk -l
[...]
Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/xvda2 doesn't contain a valid partition table
Hurrah, 160,1GB de graça! Coloque seu swap lá e esqueça as excedentes de 100 $ por servidor quando o seu swap baseado no EBS for invadido por engano. Infeliz experiência falando aqui.
Aparentemente, em alguns casos, você não vê o repositório de instâncias.
Dependendo do tipo de instância, primeiro você precisa anexar os volumes de armazenamento da instância à instância usando as opções de mapeamento de dispositivo de bloco. Se você não fizer isso, talvez nem veja os dispositivos em / dev (conforme Como usar o armazenamento "Instance Volumes de armazenamento" no Amazon EC2? )
Nota : a Amazon mudou sua política de preços e não cobra solicitações de E / S em meados de 2016. A resposta é mantida aqui por razões históricas, mas não há implicações de custo do uso (ou não do uso) de troca nas instâncias apoiadas pelo EC2 EBS.
Isso ocorre por design. A troca é desativada por padrão nas instâncias suportadas pelo EC2 EBS, para evitar custos imprevisíveis.
Se você tiver um aplicativo que consome muita memória que não funciona (por exemplo, em uma instância pequena ou pequena), ele pode gerar uma grande quantidade de solicitações de E / S no seu volume EBS. A Amazon cobra US $ 0,10 por 1 milhão de solicitações de E / S (consulte http://aws.amazon.com/pricing/ebs/ ) .
Sob condições normais, você não deve se preocupar com isso; geralmente o custo das solicitações de E / S, mesmo em instâncias menores, alguns dólares, se houver. Portanto, se você sabe que possui uma instância de tamanho adequado e essa troca será usada apenas com pouca frequência, vá em frente e ative-a. Mas tenha cuidado com pequenas instâncias.
Se você ativar a troca, poderá ficar de olho nos Relatórios de uso. Opcionalmente, você também pode configurar um alerta de cobrança acessando o Painel de controle do CloudWatch e criando um novo alarme para o valor total faturado. Dessa forma, você será notificado imediatamente, algo estranho está acontecendo com suas instâncias.
Verifique o /etc/fstab
arquivo, eles provavelmente foram configurados sem troca na imagem que você está usando. Eu acho que algumas pessoas rodam sem troca de servidores, pois esperam nunca usar mais do que a memória total - a troca torna tudo super lento.
No entanto, estou sempre paranóico com relação a algum processo que aumenta na memória, então acho que seria prudente da sua parte simplesmente configurar uma unidade de troca e recriar uma imagem da instância ec2 em execução.
Uma solução simples para rodar swap
em EC2
imagens é rodar swap
compactado com lz4
in ram
with zram-init
.
Esta solução não tira ram
o host
:
zswap
que fornece cache de RAM compactado sobre um arquivo / disco de troca normal: wiki.archlinux.org/index.php/zswap . Consulte cnx-software.com/2018/05/14/… para obter mais informações sobre o zram.