Segmentation fault de Apache2 en charge

Bonjour,

J’ai un serveur web qui fonctionne bien, mais qui commence à être un peu limite pour traiter tout le trafic qu’il y avait dessus.

J’en ai donc pris un plus puissant et j’ai réinstallé tout ce dont j’ai besoin dessus, dont principalement :
apache2-mpm-prefork (via apt-get)
php-5.2.8 (compilé à partir des sources)

Après avoir transférer les fichiers web et les fichiers de config je lance le serveur web, qui fonctionne bien. Je migre donc progressivement les site d’un serveur à l’autre.

Seulement dès que le serveur commence à avoir un peu de charge (plus de 100 process Apache2), le serveur devient extrêmement lent et le fichier error.log de Apache est rempli de plusieurs lignes par secondes du type :

[Tue Mar 31 17:18:03 2009] [notice] child pid 23702 exit signal Segmentation fault (11)

Avez-vous une idée d’où vient le problème ou de comment trouver d’où il vient ?

Merci d’avance.

Salut,

Ta version d’apache2-mpm-prefork est bien en 2.2.9-10+lenny2 ou + ?
Parce que ton problème ressemble beaucoup à un bug fixé en janvier 2009 sur lenny :
Voir ici

Quelle version de debian/kernel ?

Merci pour ta réponse rapide.

Un "apache2 -v"
Me donne :
Server version: Apache/2.2.3
Server built: Sep 8 2008 09:03:05

Version de Debian : 4.0
Kernel : 2.6.27.10-grsec-xxxx-grs-ipv4-64

Donc si j’ai bien compris la solution serait de compiler une version plus récente de Apache ?

Tu es donc toujours en etch (debian 4.0). Le truc c’est que tôt ou tard il te faudra bien passer en lenny (debian 5.0) parceque etch ne sera plus suivit d’ici un an niveau securité. Donc pourquoi ne pas le faire maintenant ?
Mais pas de précipitation, il faudrait approfondir le sujet avant de se lancer dans un tel upgrade. Quelques questions s’imposent :

  • Pourquoi compiler soit même apache et php ? Des besoins particuliers ? Des options spécifiques à activer ? Une installation à jour avec les paquets de la version stable ne suffirait t-elle pas ?
  • D’après l’aspect custom de ton kernel à la sauce grsecurity il s’agit donc d’un serveur dédié genre chez ovh, gandi et compagnie ?.. J’y connais vraiment rien en serveur dédié donc je laisse la parole au plus expérimenté dans ce domaine. Si tu dois faire un upgrade alors rends toi aussi sur le forum de ton hébergeur : il doit y avoir certainement des tutos en pagaille pour ce type de manip, et a mon avis des sujet du genre “upgrade etch lenny” c’est pas ce qui doit manquer.

Pour le passage en Lenny, je vais éviter pour l’instant, le serveur étant en prod, je préfère limiter au maximum les opérations dessus.

J’ai effectivement des besoins particuliers niveau PHP, d’ou la compilation manuelle.
Par contre pour apache, la version paquet me convient généralement très bien.

En fait je viens de comprendre. Etant en effet chez OVH, j’ai comme dépot dans mon /etc/apt/sources.list :
deb mir1.ovh.net/debian/ etch main
deb-src mir1.ovh.net/debian/ etch main

Et ces mirroirs ne sont visiblement pas à jour puisque la dernière version de apache 2.2 proposée est la 2.2.3

Je vais donc tenter de récupérer un package à jour.

Je vous tiens au courant :slightly_smiling:

merci.

Pareil pour moi sur un serveur sous etch également

apt-cache policy apache2-mpm-prefork apache2-mpm-prefork: Installé?: 2.2.3-4+etch6 Candidat?: 2.2.3-4+etch6 Table de version?: *** 2.2.3-4+etch6 0 500 http://ftp.fr.debian.org etch/main Packages

Donc c’est normal, tes depots d’ovh visant une etch ils te proposent la 2.2.3.

Tu peux peut être ajouter les dépôts ovh pour lenny (à voir avec ovh pour savoir comment faire) sans oublier de créer un fichier “preferences” (Voir ici pour les détails)

Puis faire un

et voir ce que ça raconte…

Mais j’ai peur pour toi que la version apache2-mpm-prefork de lenny ait des dépendances non satisfaisante pour ta etch. Même un upgrade de libc6 risque d’être requis, donc autant tout passer en lenny…

Alors j’ai ajoutédeb http://ftp.fr.debian.org/debian/ stable maindans mon sources.list
puis j’ai fait un apt-get update; apt-get install apache2-mpm-prefork
Là il m’a demandé si je voulais mettre à jour des tonnes de dépendances (dont libc6 effectivement il me semble) et comme je fait confiance à ceux qui font ça, j’ai dit “oui”.

A priori tout à l’air OK, j’ai plus d’erreur dans les logs. :smiley:

Enfin plus précisément, j’ai plus cette erreur là. :laughing:
Maintenant quand je fait des trucs méchants à mon serveur comme :

J’ai comme erreur dans les logs :
[emerg] (24)Too many open files: Couldn’t create pollset in child; check system or user limits

Mais a priori c’est une autre histoire. Je mets le topic en résolu ?

Je crois qu’on s’est mal compris et ce que tu as fait est vraiment pas propre :unamused: . Je te conseillais de passer par un aptitude -s justement pour simuler et connaitre les dépendances et en l’occurrence confirmer que ça coincerait au niveau de libc6.

libc6 et le coeur du systeme ! C’est pour ça que si on upgrade libc6 alors il faut tout upgrader derrière sinon y a rien de mieux pour casser tout son système…

Bref, va falloir reprendre pas mal de chose, mais la j’ai du boulot (oui un peu quand même). Si d’autre plus expérimenté veulent bien prendre le relais ça fera pas de mal au topic