Créer un fichier swap pour votre serveur Linux

:bulb: Pour les serveurs avec 4 Go de RAM ou moins, l’exécution de ./discourse-setup demandera et créera automatiquement un fichier d’échange (swapfile) de 2 Go.

La plupart des fournisseurs de machines virtuelles cloud ne configurent pas de fichiers d’échange dans le cadre de leur provisionnement de serveur.

En particulier, la mise à niveau de Discourse génère une forte pression sur la mémoire. Avec un fichier d’échange, au lieu de terminer aléatoirement des processus avec une erreur de manque de mémoire (out of memory), les choses ralentiront. Avoir un fichier d’échange est une police d’assurance peu coûteuse qui vous protège contre de nombreuses autres pannes liées à la charge.

Cela peut être fait à tout moment depuis la ligne de commande sur votre serveur.

Configurer un fichier d’échange de 2 Go

Nous recommandons un fichier d’échange de 2 Go pour Discourse, à moins que votre serveur ne dispose de plus de 4 Go de mémoire.

Dans le shell que vous avez ouvert sur votre droplet, faites ce qui suit :

:warning: Vous devrez être root pour une grande partie de ceci, soyez donc root ou exécutez sudo -s avant d’exécuter ces commandes ! N’oubliez pas de quitter le mode root par la suite.

  1. Créer un fichier d’échange vide

     install -o root -g root -m 0600 /dev/null /swapfile
    
  2. Allouer un fichier de 2 Go nommé ‘swapfile’

     fallocate -l 2G /swapfile
    
  3. Indiquer à linux que c’est le fichier d’échange :

     mkswap /swapfile
    
  4. L’activer

     swapon /swapfile
    
  5. L’ajouter à la table du système de fichiers pour qu’il soit présent après le redémarrage :

     echo "/swapfile       swap    swap    auto      0       0" | tee -a /etc/fstab
    
  6. Définir la swappiness à 10 pour qu’il ne soit utilisé qu’en tant que tampon d’urgence

     sysctl -w vm.swappiness=10
     echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
    

L’ensemble en un seul script copiable/collable :

install -o root -g root -m 0600 /dev/null /swapfile
fallocate -l 2G /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile       swap    swap    auto      0       0" | tee -a /etc/fstab
sysctl -w vm.swappiness=10
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
96 « J'aime »

J’ai essayé de configurer un fichier d’échange plus grand (4 Go au lieu des 2 Go par défaut), mais j’ai rencontré ceci en exécutant le script ci-dessus :

rm : impossible de supprimer `swapfile’ : Opération non permise

Pour contourner ce problème, j’ai dû faire ceci d’abord :

  1. Redémarrer le serveur (il ne me permettait pas de swapoff, probablement en raison d’une utilisation intensive du fichier d’échange)
  2. swapoff -a -v
3 « J'aime »

Pour des raisons similaires, j’utilise deux swapfiles :

# swapon
NAME                       TYPE  SIZE  USED PRIO
/var/local/swap/swapfile.0 file 1024M 44.9M   -3
/var/local/swap/swapfile.1 file 1024M 1024M   -2

Un deuxième fichier d’échange pourrait être un moyen astucieux d’éviter le redémarrage. Créez simplement un deuxième fichier d’échange, activez-le, puis supprimez le premier.

4 « J'aime »

Nous n’aurons donc pas besoin de suivre ce guide pour créer le fichier swap de 2 Go puisque l’installation le fait déjà si nous avons moins de 2 Go de mémoire ?

Oui - mais si vous modifiez la configuration de votre serveur, ou peut-être si vous effectuez une migration, vous devrez peut-être vous en occuper vous-même. (Dans le même temps, il y a deux configurations importantes du noyau à modifier que l’installation ne gère pas - voir MKJ’s Opinionated Discourse Deployment Configuration

10 messages ont été déplacés vers un nouveau sujet : Exigences élevées en matière de mémoire de reconstruction : édition d’avril 2025