Maison >développement back-end >tutoriel php >Méthode 2 d'utilisation de XHProf pour analyser les goulots d'étranglement des performances PHP
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
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
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.
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.
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; },
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; }
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 :
Cliquez sur une certaine demande pour voir les détails :
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!