php-fpm segfault at f6 avec APC

En voulant modifier la configuration d’APC, pour augmenter la taille d’un segment de 30M à 64M, j’ai uniquement modifié la directive apc.shm_size. L’opération m’as valu une erreur de segmentation lors du démarrage de php-fpm.

Je me suis donc mis à la tâche de mettre à jour PHP ainsi que tous ces modules PECL sous Gentoo. Une fois la mise à jour s’étant bien passé, APC est à la version 3.1.9 mais php-fpm refuse toujours de démarrer… J’ai donc remis la valeur de apc.shm_size à 30M et php-fpm s’est très bien lancé.

On peut donc vérifier la taille maximum de mémoire partagée allouée par le système de le fichier /proc/sys/kernel/shmmax :

Par conséquent, on peut voir qu’APC n’a pas pu réserver 64M de mémoire partagée, puisque le système lui refuse. Je déplore un peu le manque de message d’erreur et l’erreur de segmentation qui peut provenir de “nul-part” si l’on configure son système automatiquement.

À ce stade vous avez deux possibilités:

  • Modifier la valeur de apc.shm_segments pour qu’APC utilise plusieurs segments de mémoire partagée.
  • Modifier la configuration du système (le kernel en fait) pour qu’il permette d’allouer plus de mémoire partagée.

J’ai choisi les deux. Sous Linux (et toutes ses dérivées), vous pouvez modifier la taille maximum d’un segment de mémoire partagée en modifiant la configuration shmmax du kernel. Pour ça, modifiez le fichier /etc/sysctl.conf et ajoutez-y les lignes suivantes:

Ici, je viens de fixer la limite à 64M.

Pour valider vos changements, n’oubliez pas de lancer la commande suivante:

Ensuite, vous pouvez modifier la configuration d’APC, et php-fpm redémarre parfaitement, avec 64M de mémoire partagée par segment! :-)

facebooktwittergoogle_plusredditpinterestlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">