Manual:Profiling/fr
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 : | <translate> ≥</translate> 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.
Maintenance scripts
Maintenance scripts support a --profiler option.
This changes the output method of the profiler as well as ensuring its enabled in the CLI.
Because this only changes the output method and not the profiler class, you still must have some sort of profiling setup in $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
- <translate> Maintained by <tvar name=1>MediaWiki Platform Team</tvar>.</translate>
- <translate> Live chat ([[<tvar name=1>Special:MyLanguage/MediaWiki on IRC</tvar>|IRC]]): <tvar name=2><span class="plainlinks" style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;" title="<translate nowrap> <tvar name=1>#mediawiki-core</tvar> on Libera.Chat IRC</translate>">#mediawiki-core <translate> connect</translate></tvar></translate>
- <translate> Issue tracker: [<tvar name=url>https://phabricator.wikimedia.org/tag/mediawiki-core-profiler/</tvar> Phabricator <tvar name=phab>MediaWiki-Core-Profiler</tvar>] ([<tvar name=url2>https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=mediawiki-core-profiler</tvar> Report an issue])</translate>