php-apc ou comment augmenter facillement les performances de votre serveur web

php-apc ou comment augmenter facillement les performances de votre serveur web

Présentation et installation d’APC

le php est un language de script, il est donc interprété avant d’être exécute. Le résultat de l’interprétation est appelé op-code.
l’interprétation a un coût en terme de ressource processeur, et donc en temps pour générer une page. Apc permet de conserver dans une mémoire cache les opcodes de chaque fichier php
Afin que si le fichier php n’a pas été modifié depuis la dernière exécution (généralement le cas), il saute l’étape d’interprétation, en utilisant les opcodes directement accessible depuis le cache.

Comme d’habitude l’installation est plutôt facile

sudo apt-get install php-apc

réglage d’APC

APC permet aussi de servir de mémoire cache aussi par le script directement comme par exemple wordpress w3 total cache.
Dans ce cas, n’hésiter pas à augmenter la mémoire servant de cache.

éditer le fichier /etc/php5/conf.d/apc.ini

extension=apc.so
apc.shm_segments= "1"
apc.shm_size= "128"
;apc.stat= "0"
  • size est la taille en MegaByte que vous allouer à php-apc pour son cache, ici 128MB
  • segments le nombre de bloc memoire pour le cache
  • stat permet d’augmenter l’optimisation un peu plus en supprimant l’étape ou il vérifie si le fichier source php a été modifié. A utiliser que pour les machine en production uniquement (ou le code ne change presque jamais). Personnellement je fais trop de modification sur mon serveur pour rendre cette optimisation pertinente.

Pour d’autre variable la documentation est ici

monitoring d’APC

Pour vérifier si vous avez suffisamment alloué de mémoire à php-apc deux solutions:
administration web
monitoring via munin

administration web

L’administration Web est simple il suffit de décompresser et mettre à l’endroit de votre choix (accessible via votre serveur web bien sur) le fichier
/usr/share/doc/php-apc/apc.php.gz

ensuite éditer le fichier et modifier le mots de passe

////////// BEGIN OF DEFAULT CONFIG AREA ///////////////////////////////////////////////////////////

defaults('USE_AUTHENTICATION',1);                       // Use (internal) authentication - best choice if
                                                                                        // no other authentication is available
                                                                                        // If set to 0:
                                                                                        //  There will be no further authentication. You
                                                                                        //  will have to handle this by yourself!
                                                                                        // If set to 1:
                                                                                        //  You need to change ADMIN_PASSWORD to make
                                                                                        //  this work!
defaults('ADMIN_USERNAME','apc');                       // Admin Username
defaults('ADMIN_PASSWORD','votre mots de passe');      // Admin Password - CHANGE THIS TO ENABLE!!!

// (beckerr) I'm using a clear text password here, because I've no good idea how to let
//           users generate a md5 or crypt password in a easy way to fill it in above

//defaults('DATE_FORMAT', "d.m.Y H:i:s");       // German
defaults('DATE_FORMAT', 'Y/m/d H:i:s');         // US

defaults('GRAPH_SIZE',200);                                     // Image size

//defaults('PROXY', 'tcp://127.0.0.1:8080');

////////// END OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////////

Voila rendez vous sur la page apc.php,

Statistique d'APC
Statistique d'APC

vérifier que la variable hits représente un bon pourcentage >80%. Et qu’ il n’y a pas trop de fragmentation.