Présentation chez Neuros pour nos nAcademy des bonnes pratiques pour étudier les problématiques de performance essentillement sur des applications ou sites webs développés en PhP.
1. PHPerfs
Performances & Optimisation en PHP
29 mars 2011 Nicolas DEGARDIN
Afin de contribuer au respect de l'environnement, merci de n'imprimer ce document qu'en cas de nécessité
2. Introduction
à-propos
Site manquant d’optimisation Site à optimiser
3. Introduction
performances et le web
o CPU
o Mémoire
o Stockage
o Bande passante
Temps de traitement
Temps de transmission
Temps de réponse (requêtes par seconde)
4. Introduction
performances et le web
Fixer le contexte
Etablir des objectifs
5. Introduction
performances et le web
Adapter les technologies
o Framework / CMS / à la root’s
o Objet / Procédural
o Librairies C / librairies PHP
6. Introduction
performances et le web
Mesurer
o Obtention de points de comparaison
o Détection ponctuelle des inefficacités/bouchons
o Surveillance
o Ne pas se fier à son intuition
7. Introduction
performances et le web
S’arrêter…
Les Graphes de NID #1
8. Mesure
CPU et PHP
Peu d’outils
o Gestionnaire des tâches
o top
o tout ce qui permet d’afficher des processus…
9. Mesure
Stockage et PHP
Volumétrie à prévoir
o logs
o création/stockage de documents
o BDD
o documents uploadés
o session
o fichiers de cache
10. Mesure
Mémoire et PHP
Plusieurs méthodes
o liste des processus
o memory_get_usage(), memory_get_peak_usage()
o stacktrace Xdebug (voir API)
11. Mesure
Requêtes par seconde et PHP
Montée en charge
o ApacheBench
o Siege
o httperf
12. Mesure
Temps de transmission et PHP
Limiter les requêtes au serveur
o Réduire le nombre de fichiers JS/CSS/images afin
de réduire la sollicitation du serveur
o Réduire leur taille
o Smarty output filter « trim white space » permet
de retirer les espaces/tabulations de la page finale
13. Mesure
Temps de traitement et PHP
Profiling
o Zend_Debugger
o Xdebug
o Outils BDD
14. Mesure
SQL Server Management 2005 – estimation du plan d’exécution
15. Optimisation
Optimisation du code
J’essaye de réduire mon code au
minimum de lignes possibles,
c’est plus optimisé
Il faut utiliser des simples quotes
au lieu des doubles quotes, c’est
plus rapide à interpéter
Il vaut mieux un gros fichier
contenant plein de classes, qu’un
fichier par classe, c’est plus
performant
T’as tout biché!
16. Optimisation
Optimisation du code
Design patterns
17. Optimisation
Optimisation du code
Cache
o SQL (PHP ou BDD)
o Session
o Zend_Cache
o Smarty
o etc…
18. Optimisation
Optimisation du code
Cache via la session
21. Optimisation
Optimisation du code
Bonnes pratiques
o Autoloader plutôt que require_once()
o Réduire et ordonnancer les include_path
o Utiliser des en-têtes HTTP (Cache-Control, Expire)
o Eviter les regexps…
22. Optimisation
Optimisation autre
Configuration
o php.ini, par exemple realpath_cache_size
o configuration Apache…
23. Optimisation
Optimisation autre
Saturation
o Mémoire : dimensionner la mémoire par rapport
à la consommation moyenne par thread
o CPU : pas grand chose à faire, des pics CPU sont
souvent liés à l’utilisation d’une VM. Donc bien
choisir la technologie de virtualisation…
o Ne pas oublier Google Analytics/XITI pour
surveiller la charge