J'ai démarré quelques serveurs sur EC2 et ils n'ont pas d'échange.
Est-ce que je fais quelque chose de mal ou est-ce que les machines n'en ont tout simplement pas?
J'ai démarré quelques serveurs sur EC2 et ils n'ont pas d'échange.
Est-ce que je fais quelque chose de mal ou est-ce que les machines n'en ont tout simplement pas?
Réponses:
Vous avez raison, les images EBS Ubuntu EC2 ne sont pas fournies avec un espace d'échange configuré (pour la version 11.04 au moins). Les images de type instance "normales" ont une partition de swap, bien que seulement 896 Mo sur celle que j'ai testée.
Si un processus explose et que vous n'avez pas d'espace d'échange, votre serveur risque de s'arrêter lentement avant que le tueur de MOO n'intervienne, alors qu'avec l'échange, il devient simplement lent. Pour cette raison, j'aime toujours avoir un espace d'échange, même avec assez de RAM. Voici vos options:
Créez un volume EBS (2 à 4 fois la taille de votre RAM), attachez-le à votre instance (j'aime l'appeler / dev / xvdm pour "mémoire") sudo mkswap /dev/xvdm
, ajoutez-le à fstab sudo swapon -a
, et vous êtes prêt à partir. . Je l'ai déjà fait auparavant et cela fonctionne bien, mais c'est probablement un peu plus lent que le magasin d'instances, car il passe par le réseau.
Vous pouvez également repartitionner votre disque pour ajouter une partition de swap, bien que cela puisse nécessiter la création d'une nouvelle AMI. Je n'ai pas été capable de le faire dans une instance en cours d'exécution, car je ne peux pas démonter le système de fichiers racine et je n'ai même pas accès au périphérique de disque (/ dev / xvda), mais uniquement à la partition (xvda1).
Ou vous pouvez créer un fichier d'échange. Ceci est ma solution préférée en ce moment.
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
Terminé. :) Je sais que beaucoup de gens craignent d'utiliser des fichiers plutôt que des partitions, mais cela fonctionne certainement assez bien comme espace d'échange d'urgence.
Le meilleur emplacement pour le swap IMHO est le magasin d'instances. Pourquoi? AWS ne vous facture pas les entrées / sorties sur le magasin d'instances. En outre, le magasin d'instance est plus performant que EBS dans de nombreux cas. Assurez-vous simplement que vous avez un script qui recrée le fichier d'échange au cas où vous arrêteriez l'instance. Les redémarrages sont bien. Pourquoi oh pourquoi ce n'est pas là par défaut?
Localisons le magasin d'instance.
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
Hourra, 160.1GB gratuitement! Mettez votre échange là-bas et oubliez 100 $ de dépassement par serveur lorsque votre échange basé sur EBS est envahi par erreur. Expérience malheureuse parler ici.
Apparemment, dans certains cas, vous ne voyez pas le magasin d'instances.
En fonction du type d'instance, vous devez d'abord associer les volumes de stockage d'instance à l'instance à l'aide des options de mappage de périphérique / bloc. Si vous ne le faites pas, vous risquez même de ne pas voir les périphériques sous / dev (voir Comment utiliser le stockage "Volumes de stockage d'instance" dans Amazon EC2? )
Remarque : Amazon a modifié sa politique de tarification et ne facture pas les demandes d'E / S à partir de la mi-2016. La réponse est conservée ici pour des raisons historiques, mais l'utilisation de swap (ou non) sur les instances basées sur EC2 EBS n'a aucune incidence financière.
C'est par conception. L'échange est désactivé par défaut sur les instances EC2 basées sur EBS, afin d'éviter des coûts imprévisibles.
Si vous avez une application gourmande en mémoire qui devient malveillante (par exemple, sur une petite ou une petite instance), elle peut générer un assez grand nombre de demandes d'E / S sur votre volume EBS. Amazon facture 0,10 USD par million de demandes d'E / S (voir http://aws.amazon.com/pricing/ebs/ ) .
Dans des conditions normales, vous ne devriez pas vous en préoccuper. généralement, le coût des demandes d’E / S, même sur des instances plus petites, de quelques dollars, le cas échéant. Donc, si vous savez que vous avez une instance correctement dimensionnée et que l’échange ne sera utilisé que très rarement, continuez et activez-le. Mais soyez prudent avec de petites instances.
Si vous activez l'échange, vous voudrez peut-être garder un œil sur les rapports d'utilisation. Si vous le souhaitez, vous pouvez également configurer une alerte de facturation en accédant au panneau de configuration CloudWatch et en créant une nouvelle alarme pour le montant total facturé. De cette façon, vous serez immédiatement informé que quelque chose de bizarre se passe avec vos instances.
Vérifiez le /etc/fstab
fichier, ils ont probablement été mis en place sans échange dans l'image que vous utilisez. Je pense que certaines personnes courent sans échange de serveurs car elles s'attendent à ne jamais utiliser plus que la totalité de la mémoire. L'échange rend tout extrêmement lent.
Cependant, je suis toujours paranoïaque à propos de certains processus gonflant en mémoire, donc je pense qu'il serait prudent de vous simplement de configurer un lecteur d'échange et de recréer une image à partir de l'instance ec2 en cours d'exécution.
Une solution simple à l' exécution swap
en EC2
images est d'exécuter swap
compressé avec lz4
en ram
avec zram-init
.
Cette solution ne pas prendre ram
loin de la host
:
zswap
un cache RAM compressé au-dessus d'un fichier / disque d'échange normal: wiki.archlinux.org/index.php/zswap . Voir cnx-software.com/2018/05/14/… pour plus d'informations sur zram.