2 votes

Passenger - "Auto-kill" des processus malveillants ?

Je fais tourner une application Ruby on Rails avec Passenger + Apache. Il y a aussi un serveur de liste de diffusion en perl (Sympa) qui fonctionne avec mod_perl.

J'ai un accès root et sh au serveur (une machine Ubuntu).

La plupart du temps, tout se passe très bien ; le serveur dispose de plus de mémoire et d'espace disque que nécessaire pour gérer la charge de travail.

Mais de temps en temps (tous les trois mois environ), un processus Apache semble "se rebeller" et commence à consommer de la mémoire et du processeur comme un fou. En conséquence, le site web s'arrête (parfois, j'ai dû procéder à un redémarrage à froid ; le simple redémarrage d'Apache ne suffisait pas). J'ai effectué quelques tests et il semble que les processus en question soient des processus Ruby, ce qui me fait penser que Passenger se comporte mal.

Voici quelques graphiques de Munin pour la dernière "panne" (qui vient de se produire)

J'ai des doutes sur le processus Ruby (Passenguer). Cependant, je n'arrive pas à identifier les conditions qui déclenchent le "processus sauvage" (je ne fais qu'héberger l'application, je ne l'ai pas développée). Bien que ce serait bien, il pourrait être plus simple de simplement "tuer le processus suspendu".

J'aimerais savoir s'il existe un moyen de "tuer automatiquement" les processus qui prennent trop de mémoire ou de CPU. Existe-t-il un module Apache ou un drapeau de configuration qui traite de ce problème ?

EDIT : Jusqu'à présent, j'ai essayé RLimitCPU, RLimitMEM et RLimitNPROC d'Apache, sans succès - il semble que Passenger soit imperméable à ces paramètres. Je suis à peu près sûr que le problème se situe au niveau de Passenger maintenant, c'est pourquoi je ré-étiquette et ré-écris certaines parties de cette question.

0voto

jjnguy Points 62123

Les ulimits (configurés via /etc/security/limits.conf, ou simplement en exécutant ulimit avant d'exécuter le binaire potentiellement incriminé) sont probablement la solution à ce problème.

SistemesEz.com

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.

Powered by:

X