:::: MENU ::::

Generating core dumps for PHP-FPMGénérer des core dumps pour PHP-FPM

  • Apr 16 / 2015
  • 0
Linux

Generating core dumps for PHP-FPMGénérer des core dumps pour PHP-FPM

When you are getting some errors from PHP-FPM like “signal 11 (core dumped)” in your logs, you can need to generate some core dumps to understand what’s happening.

Install packages

You first need to install some packages to allow you generating dumps:

System core updates

You will then need to update some sysctl parameters. Those commands will request root access to be executed.
Obviously, you can change the directory in which one you want to put the core dumps depending on your configuration (here /opt/core/ is used):

You can use several patterns for naming your core dumps files:

Update PHP-FPM config

Once system configuration performed, you will need to update php-fpm configuration as well.
Edit file /etc/php5/fpm/php-fpm.conf (or specific pool configuration file under pool.d directory) and uncomment following line:

Once done, restart php5-fpm service:

Your core dumps will now be created in the folder you indicated at the beginning as soon as a new core dump will be generated.

Check your core dumps

Check your PHP-FPM logs, and if you see something like:

Go to the folder you chose for storing core dumps and you will see your core dump files:

Analyze a core dump

Once core dump generated, you will need to analyze this file to see why this core dump has been generated.
For that, you will need to use a standard tool called gdb.

Use this command line with the new file just generated to launch a debug shell and start analysis:

Once the shell is launched you can use different commands to analyze output like:

  • backtrace: it will display the simple backtrace of core dump
  • backtrace full: will display the full detailed backtrace

You will so get the backtrace of code that generated this core dump and be able to debug the application easily!

WARNING: Be careful to those core dumps which can be quite big and take lots of disk space very quickly if lots of core dumps are generated.Lorsque vous obtenez des erreurs PHP-FPM telle que “signal 11 (core dumped)” dans vos logs, vous pouvez avoir besoin de générer les core dumps associés pour comprendre ce qu’il se passe.

Installation des packages

Vous devez d’abord installer certains packages pour permettre la génération des dumps:

Mise à jour du coeur du système

Vous devrez ensuite mettre à jour certains paramètres sysctl. Ces commandes nécessitent un accès root pour être exécutées.
Evidemment, vous pouvez modifier le répertoire dans lequel vous souhaitez générer les core dumps selon votre configuration (ici /opt/core/ est utilisé) :

Vous pouvez utiliser différents patterns pour le nommage de vos fichiers core dumps :

Mise à jour de la configuration PHP-FPM

Une fois la configuration système effectuée, vous aurez besoin de mettre à jour la configuration php-fpm également.
Editez le fichier /etc/php5/fpm/php-fpm.conf (ou le fichier de configuration  spécifique au pool dans le répertoire pool.d) et dé-commentez la ligne suivante :

Une fois ceci fait, redémarrez le service php5-fpm :

Vos fichiers core dumps seront désormais créés dans le répertoire que vous avez indiqué au début dès qu’un nouveau core dump sera généré.

Vérifiez vos core dumps

Vérifiez vos logs PHP-FPM, et si vous voyez quelque chose comme :

Allez alors dans le dossier que vous avez choisi pour stocker les core dumps et vous verrez vos fichiers générés :

Analysez un core dump

Une fois le core dump généré, vous aurez besoin d’analyser le fichier pour voir pourquoi ce core dump a été généré.
Pour cela, vous aurez besoin d’utiliser un outil standard de debug appelé gdb.

Utilisez cette ligne de commande avec le nouveau fichier tout juste généré pour démarrer un shell de debug et démarrer l’analyse :

Une fois le shell lancé, vous pouvez utiliser différentes commandes pour analyser la sortie telle que :

  • backtrace: affiche un backtrace simple du core dump
  • backtrace full: affiche un backtrace détaillé et complet

Vous obtiendrez alors le backtrace du code qui a généré ce core dump et serez en mesure de débugger l’application facilement!

ATTENTION: Faites attention aux core dumps qui peuvent être assez gros et prendre beaucoup d’espace disque très rapidement si de nombreux core dumps sont générés.

Comments are closed.

Question ? Contact