rouages

Optimiser son serveur : Installation d'APC

Optimiser son serveur en installant le cache d'opcode APC

php apc, apc php, install php apc, apc ini, installation apc, apc install, installer apc, php install apc, apc serveur

Date de publication : 2008-12-19

Tout d'abord pour apprécier les bienfaits de APC de je vous conseille de lancer un petit benchmark pour pouvoir comparer avant après. Pour cela j'utilise apachebench :


root@monrps:~# ab -n 1000 -c30 -H "Accept-Encoding: gzip" http://dev.petitchevalroux.net/index.html
Requests per second: 202.56 [#/sec] (mean)
Time per request: 148.105 [ms] (mean)
Time per request: 4.937 [ms] (mean, across all concurrent requests)

On relance sans la compression gz :


root@monrps:~# ab -n 1000 -c30 http://dev.petitchevalroux.net/index.html
Requests per second: 172.74 [#/sec] (mean)
Time per request: 173.672 [ms] (mean)
Time per request: 5.789 [ms] (mean, across all concurrent requests)

Je tiens à préciser que mon fichier index.html est rendu par php.
Ce benchmark nous permettra de comparer les performances obtenues une fois APC installé.
On install pecl qui fait parti du paquet php-pear et php5-dev parce que pecl en a besoin :


root@monrps:~# aptitude install php5-dev php-pear

Maintenant on install apc en utilisant pecl :


root@monrps:~# pecl install apc

Bon là ça se corse APC vous demande un truc qui parle d'APX apache je sais pas quoi. Personnellement j'ai répondu non car j'utilise lighty, je suppose que pour les utilisateurs d'apache il faut répondre oui.
Passons la jouissance de la compilation qui fonctionne ...
Maintenant on vous dit d'ajouter dans votre php.ini :


extension=apc.so

Personnellement j'aime bien la nouvelle configuration modulaire de php donc je l'utilise en créant un fichier apc.ini dans conf.d et j'y ajoute le chargement de l'extension apc (extension=apc.so).
Pour les gens qui utilisent apache :


root@monrps:~# vi /etc/php5/apache2/conf.d/apc.ini

Pour les gens qui utilisent lighttpd :


root@monrps:~# vi /etc/php5/cgi/apc.ini

On redémarre son serveur http :


root@monrps:~# vi /etc/init.d/apache2 restart

Ou


root@monrps:~# vi /etc/init.d/lighttpd restart

Ensuite il faut copier le fichier apc.php dans votre document root (pour le rendre accessible depuis le serveur web) pour avoir les statistiques d'utilisation d'apc :


root@monrps:~# cp /usr/share/php/apc.php /votre/répertoire/accessible/apc.php

Ensuite on modifie le script apc pour changer utilisateur et mot de passe :


root@monrps:~# vi /votre/répertoire/accessible/apc.php

Les lignes ressemblent à ça :


defaults('ADMIN_USERNAME','toto');
defaults('ADMIN_PASSWORD','faitlavaiselle');

Maintenant vous pouvez vérifier que APC fonctionne et appeler le fichier apc.php depuis votre navigateur.
Les graphiques les plus importants sont les suivants :

statistiques apc


Vérifiez de temps à autres qu'il reste de la mémoire pour APC et que le taux de hit (appel caché) et supérieur au taux de miss (appel non caché).

Et le benchmark final avec gz :


root@monrps:~# ab -n 1000 -c30 -H "Accept-Encoding: gzip" http://dev.petitchevalroux.net/index.html
Requests per second: 467.40 [#/sec] (mean)
Time per request: 64.185 [ms] (mean)
Time per request: 2.139 [ms] (mean, across all concurrent requests)

Sans gz :


root@monrps:~# ab -n 1000 -c30 http://dev.petitchevalroux.net/index.html
Requests per second: 355.44 [#/sec] (mean)
Time per request: 84.403 [ms] (mean)
Time per request: 2.813 [ms] (mean, across all concurrent requests)

En calculant le gain de performance avec le nombre de requêtes par seconde on obtient un gain de performance de 467/202 = 2.30 - 1 = 130% pour le gz et de 355/172 = 2.06 -1 = 106% pour les appels non compressés.

Conclusion : J'adore APC

 
 

b1n@sp1n