Comment obtenir un vidage de mémoire apache?


8

J'ai des problèmes avec mon serveur Ubuntu 14.10. Après avoir effectué certaines actions, mon apache2 redémarre avec une erreur de segmentation. Afin de déboguer ce problème, je voudrais créer un vidage de mémoire. J'ai fait ce qui suit:

  • ajouté CoreDumpDirectory /tmp/apache-coredumpsau fichier de configuration
  • Courir ulimit -c unlimited
  • Courir apt-get install apache2-dbg php5-dbg
  • redémarré apacheet a provoqué l'erreur. Le journal affirme qu'il peut y avoir un vidage de mémoire dans le répertoire, mais il est vide.

J'ai également essayé d'utiliser gdb directement sur l'exécutable d'apache2, mais apache ne démarrera que s'il est lancé via apachectlou service apache2 start.

Comment puis-je obtenir un vidage de mémoire pour déboguer mon problème OU comment puis-je attacher gdbdirectement à apache?


Pour les premiers, regardez ici: serverfault.com/questions/470407/… pour les seconds, ici: httpd.apache.org/dev/debugging.html#gdb
Elder Geek

Malheureusement, cela n'a pas fonctionné. J'ai essayé de définir les autorisations comme suggéré dans le premier lien, mais toujours aucun noyau n'est vidé. Je connaissais déjà le deuxième lien. Il ne répond pas vraiment à ma question d'une manière spécifique à Ubuntu (Ubuntu n'a pas d'exécutable httpd, et appeler directement apache2 ne fonctionne pas pour les raisons mentionnées précédemment).
Andreas Hartmann

Le coredump est-il à la place dans / tmp?
Elder Geek

J'ai spécifié le vidage de mémoire à placer dans un dossier différent, donc ce n'est pas dans / tmp.
Andreas Hartmann

Je ne veux pas utiliser alloc, je veux examiner mon problème localement et ne pas signaler d'erreur, car ce n'est probablement pas un bogue apache.
Andreas Hartmann

Réponses:


4

ulimit -c unlimited n'affecte que votre shell actuel.

Vous pouvez le confirmer en regardant la sortie cat /proc/$(pidof -s apache2).

J'ai ajouté ulimit -c unlimitedà /etc/default/apache2et maintenant cat /proc/$(pidof -s apache2)/limitsinclut

Max core file size        unlimited            unlimited            bytes

J'ai essayé mais cela n'a toujours pas permis à Apache (12 LTS) de vider le noyau. Des pensées?
Josip Rodin

J'ai trouvé la réponse - la répartition a été activée dans /etc/default/apport, et elle a changé le modèle de vidage du noyau du noyau pour l'adapter. Voir serverfault.com/questions/470407/…
Josip Rodin

echo '/tmp/apache-coredumps/core-%e.%p'> / proc / sys / kernel / core_pattern
Rudger
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.