Out of memory: Kill process <PID> (rdiff-backup) score 839 or sacrifice child

Bonjour,

Alors petit problème en ce moment avec rdiff-backup, ça marche correctement 99,9% du temps sur mes backups, sauf que la petit problème.

Un backup a foiré, okay habituellement je passe la commande
"rdiff-backup --check-destination-dir /monserveur"

ça marche sur n’importe lequel de mes serveurs, sauf sur mon serveur de fichiers, qui contient pas mal de données, le processus dur longtemps et finit par être killé (titre du topic) (problème de mémoire, serveur 2Go de RAM, et ça swap à fond les gamelles)

J’ai essayé de jouer avec ionice, nice, cpulimit, de mettre -1000 dans le fichier /proc//oom_score_adj, pour diminuer les chances qu’il se fasse killer (ça a au final planter mon serveur), mais rien y fait, à chaque fois, le processus finit par être killer.

C’est un serveur physique sur lequel je n’ai pas forcément moyen pour le moment de rajouter de la RAM

Je commence un peu à être à cours d’idées sur ce sujet, donc si quelqu’un aurait une piste, je prends ! ><

Petit edit en métant un bout de logs :

kernel: [35763637.727441] Out of memory: Kill process 23081 (rdiff-backup) score 839 or sacrifice child

Cordialement,

Ça arrive souvent avec rdif-backup, quand il doit lire l’archive entièrement.
En fait, il arrive à se réguler pour prendre un peu moins de 100% de la RAM, du coup, il y a toujours un peu de place, mais si un autre processus demande de l’espace, le système ne peut pas demander à rdiff-backup de libérer de la RAM d’une autre façon qu’avec un signal qui ferme rdiff-backup.

Pour le moment, la seule solution que j’ai est d’éviter ce genre d’opération quand elle pose problème. Je sais, ce n’est pas top, mais, au moins, ça marche.

Oai mais ce genre d’opération je suis un peu obligé d’en faire, j’ai quand même envie de backup mon serveur de fichiers ))

Là j’essaie de jouer avec ulimit, pour que le processus crame pas tout la RAM, ça fonctionne, sauf que rdif finit par crasher et balancer l’exception outofmemory

Ce n’est clairement pas une solution, mais une proposition de contournement : as-tu envisagé rsync ?

Oui j’ai envisagé, mais ça ne me convient pas pour le moment, on a pas l’espace disque pour sauvegarder le serveur ailleurs.

Pour info, moi aussi, mais je ne sais pas trouvé comment versionner au début, puis, je suis resté à rdiff-backup depuis.

Salut,

Ce n’est pas LA solution, mais tu peux configurer ton oom killer pour qu’il sacrifie un autre soft que celui-ci en cas de nécessité de libérer de la ram.

genre:
score='-20'
echo " $score" > /proc/$PID/oom_adj

Bien entendu si un autre des softs était moins important.

Ça ne fait que repousser l’échéance, même si c’est une bonne idée.

J’ai trouvé trois liens qui abordent cette question, il y en a peut-être un qui t’intéressera :

Salut,

tu ne pourrais pas ajouter quelques giga de swap ?
Ça risque de faire ramer ton serveur, mais normalement, ça devrait permettre à rdiff-backup de survire jusqu’à la fin de son boulot…

Pour faire ça rapidement (en supposant que tu aies assez de place disponible sur / (2 Gio), sinon, il faut mettre le fichier ailleurs) :
sudo touch /swapfile
sudo chmod 600 /swapfile
sudo dd if=/dev/zero of=/swapfile count=2G
sudo swapon /swapfile

Non, j’ai essayé, il prend toute la RAM et tout le swap, j’ai essayé avec 4G de RAM et 30G de swap.
Je te dis pas, ça m’a pris des heures pour me sortir de cette merde.

D’ailleurs, je suis quelque peu faché avec le swap depuis, je n’en ai plus nul part et je convainc beaucoup les gens de faire parail.

C’est vrai que j’y ai pas pensé à rajouter du swap, je testerais en début d’après midi après que le backup de mes autres serveurs soient terminés

Le swap, c’est pas forcément mauvais, par contre, beaucoup de swap, c’est rarement une bonne chose parce que ça peut faire ramer complètement le serveur.
Dans certains cas, on préfère que le serveur mette 3 jours à exécuter un tas de calcul que de s’arrêter au bout de 3 heures sans résultat, et là, mettre beaucoup de swap peut avoir du sens.
Pour un pc de bureau, du swap a surtout à mon sens de l’intérêt pour hiberner (mais pas besoin de n fois la RAM, il faut avoir de libre au moment d’hiberner la place de stocker une image compressée de la RAM utilisée).

Après, pour le cas spécifique de rdiff-backup, je ne garantis rien…

J’ai pu backup mon serveur, l’ajout d’un fichier swap a permis au processus rdiff de pas se faire killer.

Merci !! :slight_smile: