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é
Introduction




          à-propos
    Site manquant d’optimisation   Site à optimiser
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)
Introduction




          performances et le web

               Fixer le contexte




                                   Etablir des objectifs
Introduction




          performances et le web

               Adapter les technologies

               o Framework / CMS / à la root’s
               o Objet / Procédural
               o Librairies C / librairies PHP
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
Introduction




          performances et le web

               S’arrêter…




                            Les Graphes de NID #1
Mesure




         CPU et PHP

            Peu d’outils

            o Gestionnaire des tâches
            o top
            o tout ce qui permet d’afficher des processus…
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
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)
Mesure




         Requêtes par seconde et PHP

            Montée en charge

            o ApacheBench
            o Siege
            o httperf
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
Mesure




         Temps de traitement et PHP

            Profiling

            o Zend_Debugger
            o Xdebug
            o Outils BDD
Mesure




         SQL Server Management 2005 – estimation du plan d’exécution
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é!
Optimisation




         Optimisation du code

               Design patterns
Optimisation




         Optimisation du code

               Cache

               o SQL (PHP ou BDD)
               o Session
               o Zend_Cache
               o Smarty
               o etc…
Optimisation




         Optimisation du code

               Cache via la session
Optimisation




         Optimisation du code

               Cache Zend
Optimisation




         Optimisation du code

               Cache Smarty
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…
Optimisation




         Optimisation autre

               Configuration

               o php.ini, par exemple realpath_cache_size
               o configuration Apache…
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
Optimisation




               APPLAUSE

Les performances sur des développements 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
  • 19.
    Optimisation Optimisation du code Cache Zend
  • 20.
    Optimisation Optimisation du code Cache Smarty
  • 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
  • 24.
    Optimisation APPLAUSE