J’ai découvert dernièrement qu’après une mise à jour du module php-apc
, mes logs Apache étaient emplis de message d’erreur comme ceux-ci :
[Sun Nov 02 09:15:11 2014] [notice] child pid 5937 exit signal Segmentation fault (11)
[Sun Nov 02 09:17:36 2014] [notice] child pid 5586 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:50 2014] [notice] child pid 6230 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:51 2014] [notice] child pid 6388 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:52 2014] [notice] child pid 6228 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:53 2014] [notice] child pid 6235 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:54 2014] [notice] child pid 6392 exit signal Segmentation fault (11)
[Sun Nov 02 09:21:55 2014] [notice] child pid 6385 exit signal Segmentation fault (11)
Code language: CSS (css)
Cela en fait des erreurs !
Augmenter la taille de la limite de mémoire PHP
Sur le serveur, APC est configuré pour utiliser un unique segment de 128 Mo. Le problème, c’est que la directive memory_limit
de PHP est elle aussi à 128 Mo. Par conséquent, il convient d’augmenter cette dernière :
1. On édite notre fichier de configuration PHP :
nano /etc/php5/apache2/php.ini
2. On recherche (Ctrl + w) le mot clé memory_limit et on remplace:
; Maximum amount of memory a script may consume (128MB)
; http://php.net/manual/en/ini.core.php#ini.memory-limit
memory_limit = -1
Code language: JavaScript (javascript)
par
; Maximum amount of memory a script may consume (128MB)
; http://php.net/manual/en/ini.core.php#ini.memory-limit
; memory_limit = -1
memory_limit = 256M
Code language: JavaScript (javascript)
3. On enregistre la nouvelle configuration et on relance Apache :
service apache2 restart
Vérifiez maintenant les logs Apache. Cela peut ne pas être suffisant.
Désinstaller APC
Dans mon cas, avec PHP 5.4.x, APC semble générer ces erreurs de manière aléatoire. J’ai donc désactivé APC avec :
apt-get remove php5-apc
Code language: JavaScript (javascript)
Après relance du serveur Apache et analyse des logs, la situation est revenue à la normale :
Apache PHP/5.4.34 configured -- resuming normal operations
Le problème viendrait donc d’APC et de PHP 5.4 – il est important de noter que PHP 5.5 contient déjà un optimiseur de code intégré (Zend) donc à la prochaine mise à jour majeure de PHP, il sera inutile d’installer APC.