Maison >développement back-end >tutoriel php >Méthode 2 d'utilisation de XHProf pour analyser les goulots d'étranglement des performances PHP

Méthode 2 d'utilisation de XHProf pour analyser les goulots d'étranglement des performances PHP

不言
不言original
2018-07-07 15:38:221998parcourir

Cet article présente principalement la deuxième méthode d'utilisation de XHProf pour analyser les goulots d'étranglement des performances PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Dans l'article précédent, Nous avons présenté comment analyser les performances PHP en fonction de l'extension xhprof, les enregistrer dans le journal et enfin utiliser l'interface utilisateur fournie avec l'extension xhprof pour les afficher sur le Web. Cet article parlera de 2 points de connaissances :

  • Utilisez xhgui pour remplacer l'interface utilisateur par défaut de xhprof, qui est plus facile à analyser

  • . Utilisez l'extension tideways pour remplacer l'extension xhprof

Utilisez une plus belle interface utilisateur : xhgui

xhgui prend en charge les extensions XHProf, Uprofiler ou Tideways, c'est-à-dire à condition que l'une d'entre elles les extensions sont installées. Il suffit de le planter.

Dans ce test, l'extension tideways a été réellement utilisée (aucune donnée n'est visible sur le Web après le passage à l'extension XHProf, la raison est inconnue. Il n'y a aucune donnée lors du passage à Uprofiler.).

Bien que xhprof provienne de Facebook, il n'a pas été mis à jour depuis longtemps. La source officielle a montré que ce package est abandonné et n'est plus maintenu. Tideways est tout le contraire. Les sociétés commerciales le maintiennent et soutiennent activement PHP7. Les deux extensions sont open source. Pour résumer, je vous recommande de choisir tideways pour analyser le code.

Installer l'extension tideways :

wget https://github.com/tideways/php-xhprof-extension/archive/v4.1.5.tar.gz -O php-xhprof-extension-4.1.5.tar.gz
tar xzf /php-xhprof-extension-4.1.5.tar.gz 
cd php-xhprof-extension-4.1.5 
phpize  
./configure
make && make install

Installer xhgui

cd  /work/
git clone https://github.com/perftools/xhgui.git xhgui

Si vous devez installer l'interface chinoise, vous pouvez :

git clone https://github.com/laynefyc/xhgui-branch.git  xhgui

puis installez-le en dépendance xhgui :

cd xhgui
php install.php

L'installation prendra quelques minutes, veuillez être patient.

Définissez les autorisations du répertoire de cache et autorisez nginx à créer des fichiers :

chmod -R 777

xhgui a déjà écrit tous les fichiers d'entrée d'injection, situés à external/header.php, donc nous ne le faisons pas besoin d'écrire manuellement quelque chose de similaire au précédent xhprof.inc.php fichier d'injection.

Installez MongoDB et le client

xhgui écrit des journaux sur MongoDB, donc l'utilisation de xhgui nécessite l'installation du serveur MongoDB. Le processus d'installation et de démarrage du serveur MongoDB est omis ici.

Pour améliorer les performances de MongoDB, vous pouvez exécuter la commande suivante pour ajouter un index :

$ /usr/local/mongodb/bin/mongo
> use xhprof
db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )  
db.results.ensureIndex( { 'profile.main().wt' : -1 } )  
db.results.ensureIndex( { 'profile.main().mu' : -1 } )  
db.results.ensureIndex( { 'profile.main().cpu' : -1 } )  
db.results.ensureIndex( { 'meta.url' : 1 } )

De même, puisque xhgui est écrit en PHP, il doit également lire les données dans MongoDB. Installez le client php MongoDB :

pecl install mongodb

Ajoutez ensuite la configuration dans le fichier php.ini :

[mongo]
extension=mongo.so

Vérifiez si l'extension est installée avec succès :

php -m | grep mongo

Redémarrez ensuite le service php-fpm.

Configurer xhgui

Le répertoire de configuration de xhgui a un config.default.php, copiez-le comme config.php, si l'adresse mongodb n'est pas celle par défaut, modifiez :

    'db.host' => 'mongodb://127.0.0.1:27017',

Il y a aussi une modification de la fréquence d'échantillonnage. La valeur par défaut est 1/100 Si testé, changez-la en vrai :

    'profiler.enable' => function() {
        //return rand(1, 100) === 42;
        return true;
    },

Injection du projet de configuration

Dans le précédent. article, nous avons présenté le fichier d'entrée d'injection. Vous pouvez l'écrire dans php.ini ou nginx. Je recommande de l'écrire dans la configuration nginx. Cela n'affectera que les projets correspondant au nginx, pas tous les projets utilisant l'environnement php. Le fichier d'entrée utilise le fichier d'injection fourni avec xhgui :

jifen.cc.conf

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param PHP_VALUE "auto_prepend_file=/work/xhgui/external/header.php";
    include        fastcgi_params;
}

Configurer xhgui web

Nous modifions xhprof.test.com.conf comme :

server {
    listen       80;
    server_name  xhprof.test.com;

    #root /work/xhprof/xhprof_html;
    root /work/xhgui/webroot/;
    index index.php index.html;
    
    location / {
       if (!-e $request_filename) {
            rewrite . /index.php last;
        }
    }

    location ~ \.php$ {
        
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
}

Redémarrez le service nginx.

Nous avons demandé l'interface de l'application plusieurs fois, ouvert le navigateur et entré http://xhprof.test.com/, vous pouvez voir :

Méthode 2 dutilisation de XHProf pour analyser les goulots détranglement des performances PHPCliquez sur une certaine demande pour voir les détails :
Méthode 2 dutilisation de XHProf pour analyser les goulots détranglement des performances PHP

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Méthode 1 d'utilisation de XHProf pour analyser les goulots d'étranglement des performances PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn