web-dev-qa-db-fra.com

Avons-nous besoin d'une partition d'échange sur un serveur LAMP?

Avons-nous réellement besoin d'échanger la partition sur le serveur Ubuntu avec LAMP? Je pense que je n'en ai pas besoin, mais il vaut mieux savoir avec certitude si cela ne provoquera pas un comportement imprévu.
En fait, mes pensées étaient les suivantes:

  • Le serveur ne veille jamais
  • S'il s'agit de permuter, il faut penser à l'équilibrage de la charge/au lissage du trafic, etc.

Ai-je raison de désactiver le serveur d'échange pour le serveur de production?

Merci!

13
Arman

Ai-je raison de désactiver le serveur d'échange pour le serveur de production?

Non, ayez toujours un espace d'échange.

J'ai essayé de lancer 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 ce que nous avions expliqué. . Lorsque vous êtes à court de RAM et que vous avez activé la permutation, les choses ralentissent (parfois beaucoup, parfois juste un peu, en fonction de ce qui y est inséré), mais vous pouvez vous connecter, trouver le problème et essayez de le résoudre.

Lorsque vous êtes à court de RAM et que vous ne disposez d'aucun échange, les processus meurent, tout s'arrête et la plupart du temps, votre seule option est un redémarrage. Mais jusqu’à ce que vous redémarriez, les choses vont probablement casser.

Dans mon monde, brisé est bien pire que lent.

Bien sûr, si vous constatez que votre système utilise en permanence de grandes quantités d’échange (il utilisera très souvent un peu comme moyen de supprimer les anciens éléments en cache). , vous avez évidemment un problème ("insérez RAM s'il vous plaît"), mais le garder comme filet de sécurité est définitivement recommandé.


En réponse au commentaire de SpamapS:

Dans le monde des "sites Web réussis", vous disposez de basculements à chaud, d'équilibrage de charge et d'autres outils permettant à une machine d'exploser et d'avoir un effet nul 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 rapportent de l'argent.

Je suis complètement en désaccord avec votre commentaire sur la disponibilité. Dans une configuration traditionnelle de commerce électronique, si les gens ne peuvent pas voir votre site, ils ne peuvent pas acheter chez vous. = Il ne s’agit pas que du commerce électronique, tous les intérêts commerciaux en ligne sont beaucoup plus critiqués si vous êtes en panne, peu importe la période. Je sais parce que j'héberge des sites et des services pour des entreprises et que je gère mes propres sites. Lent = grincheux mais bas = fureur. Même si vous ne restez connecté que quelques minutes à la fois, si un utilisateur voit plusieurs fois l'avis de maintenance, il suppose que vous ne pouvez pas conserver le site.

Un serveur lent n’est pas idéal, mais l’échange n’est pas possible, c’est un dernier recours pour permettre aux éléments de continuer à fonctionner pendant que vous les corrigez.

Vous supposez également qu’un seul service est en cours d’exécution sur la machine. Encore une fois, cela pourrait être vrai si vous avez des mégabucks pour tout diviser, 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 fuit dans l'échange 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 sur cela.

Bien sûr, l'échange n'est pas la seule réponse. Vous avez besoin d'une surveillance pour vous alerter lorsque vous êtes hors de portée, mais il suffit de débrancher et de redémarrer n'est pas la solution pour la majorité des gens. Je suis sûr que cela fonctionne pour n'importe quel site Web multinational dont vous êtes responsable, mais pour nous, simples mortels (qui constituent la majorité de l'internet), il s'agit d'un suicide commercial.

14
Oli

Je ne suis pas d'accord avec le swap sur les serveurs de production.

D'après mon expérience, la permutation de disque en rotation rend votre système moins prévisible et plus enclin à frustrer une défaillance totale du système. Un serveur populaire à forte charge qui fait quoi que ce soit avec un disque lent local va rapidement se transformer 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 de SSD est un cas à part et permettrait au moins d’éliminer le ralentissement de la recherche qui tue généralement le système. Cependant, les écritures sont toujours lentes et vous devrez donc attendre très longtemps pour récupérer après un processus incontrôlable.

Sans échange, votre serveur LAMP supprimera tout simplement les processus pour libérer de la mémoire vive. Une surveillance appropriée devrait vous en avertir et retirer les serveurs de la production si des processus critiques sont éliminés. Le pire des cas, c’est que toutes vos méthodes de connexion soient éliminées et que vous deviez effectuer une réinitialisation matérielle/un cycle d’alimentation. Ce cas de figure est toujours aussi probable avec une machine d’échange hors de contrôle, mais beaucoup plus difficile à détecter.

Si vous utilisez PHP, activez les limites de mémoire et surveillez les échecs de vos journaux. Voici une astuce: définissez la limite inférieure sur votre serveur de développement par rapport à la production. Si vous utilisez mod_php sous Apache, définissez MaxRequestsPerChild sur quelques milliers, de sorte que httpd disparaisse avant de devenir trop volumineux au fil du temps. Surtout, surveillez l'utilisation de la mémoire! Souvent, la mémoire s’insinue au fil du temps et il vous suffit de redémarrer périodiquement un service présentant des fuites pendant le débogage du problème.

4
SpamapS

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 disponible est insuffisante. S'il s'avère que le système a besoin de davantage de ressources de mémoire ou d'espace, les pages inactives de la mémoire physique sont ensuite déplacées vers l'espace de permutation, 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 tels que la sauvegarde consomment toujours beaucoup de mémoire
c). circulation dense

C'est donc une bonne pratique d'avoir un espace d'échange.

Plus de détails: https://help.ubuntu.com/community/SwapFaq

3
aneeshep

L'utilisation de swap vous donnera une protection supplémentaire contre l'instabilité du serveur. Il se peut que RAM soit sur le point de s’épuiser et sur un serveur sans échange pouvant donner lieu à un crash logiciel.

Je suis probablement dans la minorité maintenant quand je dis, cela est toujours logique , comme ils le recommandaient, d'avoir deux fois plus d'échange que vous. 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. L’activation du swap n’est justifiée que par une analyse coûts-avantages très simple. Fais le! :-)

2
Stefano Palazzo

Je voudrais remercier Oli pour la belle réponse - je connais le vieux. Je trouve que le partitionnement est un sujet toujours vert! Je suis tout à fait d'accord avec la ligne du message d'Oli et j'aimerais partager ce script - bien sûr, qui peut être amélioré - que j'utilise pour surveiller l'utilisation de l'échange de mes serveurs.

Je configure toujours les serveurs et les services pour qu'ils fonctionnent sans aucune occurrence d'échange. Quand cela se produira, assurez-vous que quelque chose ne va pas ou, au mieux, que vos plans initiaux sont dépassés.

Je crontab ce script toutes les demi-heure en environnement de production. Il m'enverra une notification si Swap use! = 0k. Je serai capable d’enquêter rapidement/d’agir sur la question, la plupart du temps, avant les choses deviennent vraiment fausses.

Vous attend à ce que vous ayez: bash, top, echo, awk et une commande mail active, sans effectuer aucun contrôle.

J'espère que ça t'as aidé.

#!/bin/bash
CURRSWAP=$(top -b -n1 |grep Swap |awk '{print $4}')
ECOMM="echo $CURRSWAP means healthy, I wont take any action."
CURRDATE=$(date)
MAILDST="[email protected]"

case $CURRSWAP in
  [0]k) $ECOMM
        exit 0
        ;;
  *)    echo -e "Server: $HOSTNAME \n Date: $CURRDATE \n Current Swap partition usage: $CURRSWAP" | mail -s "Warning from $HOSTNAME" -- $MAILDST
        exit 0
        ;;
esac
exit 0
0
Marco