Atualmente, estou executando uma micro instância ec2 e descobri que a instância ocasionalmente fica sem memória.
Além de usar um tamanho de instância maior, o que mais pode ser feito?
Atualmente, estou executando uma micro instância ec2 e descobri que a instância ocasionalmente fica sem memória.
Além de usar um tamanho de instância maior, o que mais pode ser feito?
Respostas:
Uma correção para esse problema é adicionar swap
(ou seja paging
) espaço à instância.
A paginação funciona criando uma área no disco rígido e usando-a para obter memória extra. Essa memória é muito mais lenta que a memória normal, mas há muito mais disponível.
Para adicionar esse espaço extra à sua instância, digite:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
Se você precisar de mais de 1024, mude isso para algo mais alto.
Para habilitá-lo por padrão após a reinicialização, adicione esta linha ao / etc / fstab:
/var/swap.1 swap swap defaults 0 0
if
significa 'arquivo de entrada', of
significa 'arquivo de saída', bs
significa 'tamanho do bloco' e count
é o número de blocos que você deseja alocar ... você pode ler a man
página do comando para obter mais informações: linux.die.net/man/1/ dd
$> free -m
A troca deve ocorrer no disco de armazenamento de instância (efêmero) e não em um dispositivo EBS. A troca causará muito IO e aumentará o custo no EBS. O EBS também é mais lento que o Repositório de Instâncias e o Repositório de Instâncias é fornecido gratuitamente com certos tipos de Instâncias do EC2 .
Geralmente ele será montado em / mnt, mas se não for executado
sudo mount /dev/xvda2 /mnt
Para criar um arquivo de troca neste dispositivo, faça o seguinte para um arquivo de troca de 4 GB
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096
Certifique-se de que nenhum outro usuário possa visualizar o arquivo de troca
sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile
Fazer e sinalizar como swap
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
Adicione / verifique se o seguinte está no seu / etc / fstab
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/mnt/swapfile swap swap defaults 0 0
por fim, ativar a troca
sudo swapon -a
Após aplicar as etapas mencionadas por ajtrichards, você pode verificar se sua instância do Amazon Free Tier está usando swap usando este comando
cat /proc/meminfo
resultado:
ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal: 604340 kB
MemFree: 8524 kB
Buffers: 3380 kB
Cached: 398316 kB
SwapCached: 0 kB
Active: 165476 kB
Inactive: 384556 kB
Active(anon): 141344 kB
Inactive(anon): 7248 kB
Active(file): 24132 kB
Inactive(file): 377308 kB
Unevictable: 0 kB
Mlocked: 0 kB
Total da troca: 1048572 kB
Troca grátis: 1048572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 148368 kB
Mapped: 14304 kB
Shmem: 256 kB
Slab: 26392 kB
SReclaimable: 18648 kB
SUnreclaim: 7744 kB
KernelStack: 736 kB
PageTables: 5060 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1350740 kB
Committed_AS: 623908 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7420 kB
VmallocChunk: 34359728748 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
Você pode adicionar uma troca de 1 GB à sua instância com estes comandos:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
Para habilitá-lo por padrão após a reinicialização, adicione esta linha a /etc/fstab
:
/swapfile swap swap defaults 0 0
/swapfile
. Mas você também pode montar outro sistema de arquivos e criar o arquivo de troca lá, por exemplo /mnt/blah/swapfile
.
Se você estiver em t2
casos ( t2.micro
, t2.medium
, t2.small
), não há efêmera ou instância de armazenamento disponível para você. Portanto, você precisa apenas criar seu swap no EBS
qual, dependendo do seu caso de uso, pode ou não ser uma boa idéia. Caso contrário, siga a resposta de @David e crie sua troca no armazenamento efêmero para evitar pagar os custos do EBS.
Mais informações: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html, existe uma tabela que mostra a quantidade de armazenamento efêmero que você obtém para cada tipo de instância.
For example, if you provision a volume with 1000 IOPS, and keep this volume for 15 days in a 30 day month, then in a Region that charges $0.10 per provisioned IOPS-month, you would be charged $50 for the IOPS that you provision ($0.10 per provisioned IOPS-month * 1000 IOPS provisioned * 15 days/30). You will be charged for the IOPS provisioned on a volume even when the volume is detached from an instance.
. Parece que a AWS cobrará pelas operações de leitura e gravação.
Você pode criar espaço de troca usando as seguintes etapas Aqui estamos criando troca em /home/
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
Aqui a contagem é a contagem de kilobytes de espaço de troca
mkswap /home/swapfile1
vi /etc/fstab
faça a entrada:
/home/swapfile1 swap swap defaults 0 0
corre:
swapon -a
Podemos adicionar espaço de troca em qualquer servidor
crie um arquivo usando o comando dd
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bs é tamanho de bloco e contagem refere-se ao tamanho em MB ou GB
podemos usar vice-versa
Após a criação, altere a permissão do arquivo:
#chmod 600 /swapfile
Em seguida, cria o arquivo:
#mkswap /swapfile
Ative o arquivo swap com o comando swapon:
#swapon /swapfile
Verifique com comando livre se a troca está ativada ou não:
#free -h
#swapon -s
Usando a resposta do Instance Storage de David, inicialmente funcionou para mim (em um m5d.2xlarge), no entanto, depois de parar a instância do EC2 e ativá-la novamente, não consegui fazer o ssh novamente na instância.
A instância registra: "Você está no modo de emergência. Após o login, digite" journalctl -xb "para visualizar os logs do sistema," systemctl reboot "para reiniciar," systemctl default "ou" exit "para inicializar no modo padrão. Pressione Enter para manutenção"
Em vez disso, segui as instruções da AWS neste link e tudo funcionou perfeitamente, inclusive após desligar e ligar a instância novamente.
https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
Experimente o swapspace http://pqxx.org/development/swapspace/
A maioria das distros o inclui.
No EC2, convém alterar "swappath" para / mnt ou disco high-iops.
Você pode usar o script a seguir para adicionar swap no Amazon Linux.
https://github.com/chetankapoor/swap
Faça o download do script usando o wget:
wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh
Em seguida, execute o script com o seguinte formato:
sh swap.sh 2G
Para um tutorial completo, você pode visitar: