J'ai démarré quelques serveurs sur EC2 et ils n'ont pas de swap.
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 de swap.
Est-ce que je fais quelque chose de mal ou est-ce que les machines n'en ont tout simplement pas ?
Vous avez raison, les images EC2 EBS d'Ubuntu ne sont pas fournies avec de l'espace de pagination configuré (pour l'espace de pagination). 11.04 au moins). Les images d'instance "normales" ont une partition swap, mais seulement 896 Mo sur celle que j'ai testée.
Si un processus explose et que vous n'avez pas d'espace de permutation, votre serveur peut s'arrêter de fonctionner pendant un bon moment avant que le tueur OOM n'intervienne, alors qu'avec la permutation, il devient simplement lent. Pour cette raison, j'aime toujours avoir de l'espace swap, même avec suffisamment 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
et l'ajouter à fstab, sudo swapon -a
et tu es prêt à partir. J'ai déjà fait cela auparavant et cela fonctionne bien, mais c'est probablement un peu plus lent que le magasin d'instance car cela passe par le réseau.
Vous pouvez aussi repartitionner votre disque pour ajouter une partition swap, mais cela peut nécessiter la création d'une nouvelle AMI. Je n'ai pas été en mesure 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 disque (/dev/xvda), seulement à la partition (xvda1).
Ou vous pouvez créer un fichier d'échange. C'est la solution que je préfère pour le 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
Fait. :) Je sais que beaucoup de gens se sentent mal à l'aise à l'idée d'utiliser des fichiers au lieu de partitions, mais cela fonctionne très bien comme espace d'échange de secours.
Nota : Amazon a changé son politique de prix et ne facture pas les demandes d'E/S depuis la mi-2016. La réponse est conservée ici pour des raisons historiques, mais l'utilisation (ou non) du swap sur les instances EC2 soutenues par EBS n'a aucune incidence sur les coûts.
C'est à dessein. Le swap est désactivé par défaut sur les instances EC2 EBS, afin d'éviter des coûts imprévisibles.
Si vous avez une application gourmande en mémoire qui se rebelle (par exemple, sur une instance minuscule ou petite), elle peut générer une quantité assez importante de demandes d'E/S sur votre volume EBS. Amazon facture 0,10 $ par million de requêtes E/S (voir http://aws.amazon.com/pricing/ebs/ ) .
Dans des conditions normales, vous ne devriez pas vous en inquiéter ; en général, le coût des demandes d'E/S - même sur des instances plus petites - ne représente que quelques dollars. Donc, si vous savez que vous avez un instance correctement dimensionnée si le swap n'est pas utilisé fréquemment, vous pouvez l'activer. Mais soyez prudent avec les petites instances.
Si vous activez le swap, vous voudrez peut-être garder un œil sur les rapports d'utilisation. En option, vous pouvez également configurer une alerte de facturation en vous rendant à l'adresse suivante Panneau de contrôle CloudWatch et créer une nouvelle alarme pour le montant total facturé. De cette façon, vous serez immédiatement averti si quelque chose de bizarre se passe avec vos instances.
Le meilleur emplacement pour le swap, à mon avis, est le magasin d'instance. Pourquoi ? AWS ne vous facture pas les entrées/sorties sur le magasin d'instance. En outre, l'instance-store est plus performant que l'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 acceptés. Pourquoi n'est-elle pas là par défaut ?
Localisons l'instance-store.
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 gratuits ! Mettez votre swap là-dedans et oubliez les surconsommations de 100 $ par serveur lorsque votre swap basé sur EBS est envahi par erreur. C'est une expérience malheureuse qui parle ici.
Apparemment, dans certains cas, on ne voit pas le magasin d'instance.
Selon le type d'instance, vous devez d'abord attacher les volumes du magasin d'instance à l'instance en utilisant les options de mappage de périphérique de bloc. Si vous ne le faites pas, il se peut que vous ne voyiez même pas les périphériques sous /dev (conformément à l'option de mappage par blocs). Comment utiliser le stockage "Instance Store Volumes" dans Amazon EC2 ? )
Vérifiez le /etc/fstab
ils ont probablement été configurés sans swap dans l'image que vous utilisez. Je pense que certaines personnes utilisent des serveurs sans swap car ils s'attendent à ne jamais utiliser plus que la mémoire totale - le swapping rend tout super lent.
Cependant, je suis toujours paranoïaque à propos d'un processus qui gonfle en mémoire, donc je pense qu'il serait prudent de votre part de simplement mettre en place un lecteur de swap et de recréer une image à partir de l'instance ec2 en cours d'exécution.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.