Ai-je raison de désactiver le swap pour le serveur de production?
Non. Ayez toujours un espace de swap.
J'ai essayé d'exécuter un serveur de production sans échange une fois et environ une semaine plus tard, après une mise à jour de Wordpress, PHP a commencé à manger beaucoup plus de RAM que nous n'en avions prévu. Lorsque vous manquez de RAM et que le swap est activé, les choses ralentissent (parfois beaucoup, parfois juste un peu, selon ce qui y est poussé), mais vous pouvez vous connecter, trouver le problème et essayer de le résoudre il.
Lorsque vous manquez de RAM et n'avez aucun échange, les processus meurent, les choses s'arrêtent et la plupart du temps, votre seule option est un redémarrage. Mais jusqu'à ce que vous fassiez ce redémarrage, les choses vont probablement se casser.
Dans mon monde, brisé est bien pire que lent.
Bien sûr , si vous trouvez que votre système utilise constamment de grandes portions de swap (il très souvent utiliser certains comme un moyen de sortir des vieux trucs mises en cache), vous avez évidemment un problème ( « RAM d'insertion s'il vous plaît »), mais ayant comme un filet de sécurité est définitivement recommandé.
En réponse au commentaire de SpamapS:
Dans le monde des "sites Web à succès", vous disposez de basculements à chaud, d'équilibrage de charge et d'autres outils qui permettent à une machine d'exploser et n'ont aucun effet sur le reste du site. Mais cela prend beaucoup d'argent. Avoir du matériel redondant n'est pas économique pour la plupart des sites, même s'ils tirent de l'argent.
Je suis totalement en désaccord avec votre commentaire sur la disponibilité. Dans une configuration de commerce électronique traditionnelle, si les gens ne peuvent pas voir votre site, ils ne peuvent pas acheter chez vous. Ce n'est pas seulement du commerce électronique, tous les intérêts commerciaux en ligne prennent beaucoup plus de retard si vous êtes en panne pour toute sorte de période. Je le sais car j'héberge des sites et des services pour les entreprises et gère mes propres sites. Lent = grincheux mais Down = fureur. Même si vous ne descendez qu'une minute à la fois, si un utilisateur voit un avis de "panne pour maintenance" plus de deux fois, il suppose que vous ne pouvez pas garder le site en place.
Un serveur lent n'est pas idéal mais le swap n'est pas là pour être exécuté tout le temps, c'est un dernier recours pour permettre aux choses de continuer à fonctionner pendant que vous les corrigez.
Vous supposez également qu'il n'y a qu'un seul service en cours d'exécution sur la machine. Encore une fois, cela pourrait être vrai si vous avez des mégabucks pour tout fractionner, mais dans le monde réel, les choses sont regroupées. Plusieurs sites Web, démons ssh, serveurs ftp, serveurs de messagerie, etc. Un processus qui s'infiltre dans le swap peut même ne pas affecter un autre service. Sans échange, tout a une chance égale de résiliation instantanée et aléatoire. Vous n'avez aucun contrôle dessus.
Bien sûr, l'échange n'est pas la seule réponse. Vous avez besoin d'une surveillance pour vous alerter lorsque vous êtes à court de RAM, mais le simple fait de débrancher la prise et de redémarrer n'est pas la solution pour la majorité des gens. Je suis sûr que cela fonctionne pour le site Web multinational dont vous êtes responsable, mais pour nous, les simples mortels (qui constituent la majorité d'Internet), le faire est un suicide commercial.
Je dois être en désaccord avec l'échange sur les serveurs de production.
D'après mon expérience, l'échange de disques rotatif rend votre système moins prévisible et plus enclin à frustrer les pannes de l'ensemble du système. Un serveur populaire à charge élevée qui fait quoi que ce soit avec un disque lent local se transformera rapidement en quelque chose de bien pire qu'un état d'échec. Les temps de réponse augmenteront jusqu'à 100 fois leur niveau normal, et des choses simples comme la connexion via la console ou ssh peuvent prendre quelques minutes.
L'échange SSD est un cas spécial et supprimerait au moins le ralentissement du temps de recherche qui tue généralement le système. Cependant, les écritures sont encore lentes, vous finirez donc par attendre très longtemps pour récupérer d'un processus hors de contrôle.
Sans échange, votre serveur LAMP va simplement tuer les processus pour libérer de la RAM. Une surveillance appropriée doit vous alerter de cela et supprimer les serveurs de la production si les processus critiques sont tués. Le pire des cas ici est que vos méthodes de connexion sont toutes supprimées et que vous devez effectuer une réinitialisation matérielle / un cycle d'alimentation. Ce pire cas est toujours aussi probable avec une machine à échanger hors de contrôle, mais beaucoup plus difficile à détecter.
Si vous utilisez PHP, activez les limites de mémoire et surveillez vos journaux pour leurs échecs. Voici une astuce, définissez une limite plus basse sur votre serveur de développement qu'en production. Si vous utilisez mod_php sous apache, définissez MaxRequestsPerChild sur quelques milliers, afin que httpd meure avant de devenir trop grand au fil du temps. Surtout, surveillez l'utilisation de la mémoire! Souvent, la mémoire augmente au fil du temps et il vous suffit de redémarrer périodiquement un service qui fuit pendant que vous déboguez le problème.
la source
L'espace d'échange est utilisé lorsque votre système décide qu'il a besoin de mémoire physique pour les processus actifs et que la mémoire physique inutilisée est insuffisante. Si le système a besoin de plus de ressources mémoire ou d'espace, les pages inactives de la mémoire physique sont ensuite déplacées vers l'espace de swap, libérant ainsi cette mémoire physique pour d'autres utilisations.
Cette situation se produira plusieurs fois sur le serveur.
une). Un script non optimisé peut consommer une grande quantité de mémoire
b). Les scripts comme la sauvegarde consomment toujours une énorme mémoire
c). circulation dense
C'est donc une bonne pratique d'avoir un espace de swap.
Plus de détails: https://help.ubuntu.com/community/SwapFaq
la source
L'utilisation de swap vous donnera une protection supplémentaire contre l'instabilité du serveur. Il peut bien y avoir des moments où la RAM est épuisée et sur le serveur sans échange, ce qui pourrait entraîner un plantage progressif.
Je suis probablement en minorité maintenant quand je dis, il est toujours logique, comme ils le recommandaient auparavant, d'avoir deux fois plus de swap que vous avez de mémoire principale. Même sur un système avec 96 Go de RAM.
Cela ne coûte pas cher et, si vous en avez besoin un jour, vous serez content de l'avoir. La raison de l'activation du swap est simplement une analyse coûts-avantages très simple. Fais le! :-)
la source
Je voudrais remercier Oli pour la belle - je sais vieille - réponse. Je trouve que le partitionnement est un sujet toujours vert! Je suis totalement d'accord avec la ligne du post d'Oli et je voudrais partager ce script - bien sûr améliorable - que j'utilise pour surveiller l'utilisation de swap de mes serveurs.
Je configure toujours les serveurs et les services pour qu'ils fonctionnent sans aucun échange. Lorsque c'est le cas, assurez-vous que quelque chose ne va pas ou, au mieux, que quelque chose dépasse vos plans initiaux.
Je crée ce script toutes les demi-heures en environnement de production. Il m'enverra une notification si Swap use! = 0k. Je pourrai rapidement enquêter / prendre des mesures sur le problème, la plupart du temps, avant que les choses ne tournent vraiment mal .
S'attend à ce que vous ayez: bash, top, echo, awk et une commande de messagerie fonctionnelle, sans effectuer aucune vérification.
J'espère que cela pourra aider.
la source