Manuel:Profilage
Le profilage (profiling) suit l'exécution du code pendant l'action sur une page et fournit le pourcentage relatif du temps d'exécution dans chaque fonction spécifique. Le profilage est une tâche avancée pour les développeurs et les administrateurs système pour tracer les sources de ralentissement dans MediaWiki à optimiser.
Profilage PHP
Vous pouvez utiliser Tideways ou XDebug. Ces extensions PHP fournissent les possibilités de trace et de profilage.
Tideways dispose aussi d'une interface utilisateur propriétaire pour visualiser les résultats, mais elle ne vous est pas nécessaire.
Installez le paquetage php-tideways
sous Debian / Ubuntu, ou Homebrew sous macOS.
Pour XDebug, voir la documentation du profiling XDebug.
Pour les scripts en mode ligne de commande, vous pouvez utiliser php -d xdebug.mode=profile maintenance/{script}
.
Webgrind peut ensuite être utilisé pour afficher les résultats du profile.
Profilage personnalisé MediaWiki
wfProfileIn
/wfProfileOut
) sont obsolètes et non opérationels depuis MediaWiki 1.25; ils ont été supprimés en 1.31.Version de MediaWiki : | ≥ 1.25 |
En MediaWiki 1.25 le profilage a été complètement réécrit et beaucoup de paramètres qui avant étaient relatifs au profilage, ont été supprimés en faveur de leur consolidation comme paramètres de $wgProfiler. Notamment, la sortie a été séparée des types de classes. Pour la documentation concernant le profilage avant la version 1.25, voir une ancienne version de cette page.
Exemple de configuration $wgProfiler :
<?php
$wgProfiler['class'] = 'ProfilerXhprof';
$wgProfiler['output'] = [ 'ProfilerOutputText' ];
$wgProfiler['visible'] = true;
Chacun de ces paramètres (et plus) est décrit en détails :
- class
- 'ProfilerXhprof'. ProfilerXhprof est nouveau en MediaWiki 1.25 et fournit un profileur de type Xhprof qui capture des données de profilage pour toutes les fonctions et les sous-unités fonctionnelles. Les anciennes valeurs telles que ProfilerStandard, ProfilerUDP, ProfilerDB, etc ne fonctionnent pas. Même si vous utilisez Tideways, spécifiez encore la classe ProfilerXhprof.
- output
- Une ou plusieurs valeurs parmi 'ProfilerOutputText', 'ProfilerOutputDump', 'ProfilerOutputStats'[1].
text
génère l'information soit sous forme de commentaires HTML ou après l'habillage.udp
est un format d'envoi pour un démon udpprofile.dump
vide les données de profilage pour être utilisées avec l'interface graphique utilisateur xhprof (rôle xhprofgui dans les paramètres Vagrant). - outputDir
- Ne s'applique qu'au format 'ProfilerOutputDump'. Nécessaire pour spécifier où les fichiers de vidage seront enregistrés.
- visible
- Ne s'applique qu'au format 'ProfilerOutputText'. Indique si le texte est affiché après l'habillage ou dans un commentaire HTML.
Scripts de maintenance
Les scripts de maintenance reconnaissent l'option --profiler.
Cela modifie la méthode de sortie du profileur et assure en même temps son activation dans le CLI.
Parce que cela ne change que la méthode de sortie et non la classe du profileur, vous devez encore avoir une sorte de configuration de profilage dans $wgProfiler
.
Résolution des problèmes
Si vous obtenez l' « Erreur fatale : Exception non récupérée : ni xhprof ni tideways ne sont installés » alors voici ce que vous devez faire :
$ sudo apt install php-tideways
$ sudo service apache2 restart
Si vous obtenez encore une erreur, allez sur https://tideways.com/profiler/xhprof-for-php7
Sortie
La sortie texte ressemble à :
100.00% 508.972 1 - main()
96.67% 492.003 1 - MediaWiki::run
96.61% 491.699 1 - MediaWiki::main
87.12% 443.434 1 - MediaWiki::performRequest
84.16% 428.356 1 - SpecialPageFactory::executePath
84.11% 428.073 1 - SpecialPage::run
84.10% 428.058 1 - SpecialRecentChanges::execute
63.82% 324.838 1 - ChangesListSpecialPage::execute
57.07% 290.495 1 - ChangesListSpecialPage::webOutput
51.06% 259.877 1 - SpecialRecentChanges::outputChangesList
44.72% 227.633 397 - Wikimedia\Rdbms\Database::query
31.07% 158.155 922 - Message::fetchMessage
30.61% 155.788 865 - MessageCache::get
29.55% 150.398 398 - Wikimedia\Rdbms\Database::doProfiledQuery
29.39% 149.570 865 - MessageCache::getMessageFromFallbackChain
29.26% 148.923 869 - MessageCache::getMessageForLang
29.06% 147.931 393 - Wikimedia\Rdbms\Database::select
27.30% 138.962 1 - EnhancedChangesList::endRecentChangesList
27.30% 138.960 1 - EnhancedChangesList::recentChangesBlock
...
La première colonne est le pourcentage du temps; la seconde représente le temps passé (en ms); la troisième est le coût; et la quatrième est le nom de la méthode.
Voir aussi
Notes de bas de page
- ↑ Voir git #750e4eb9
Code steward
- Maintenu par MediaWiki Platform Team.
- Discussion en direct (IRC): #mediawiki-core connecter
- Suivi des problèmes : Phabricator MediaWiki-Core-Profiler (rapporter un problème)