Manual:Profiling/ja
プロファイリングは、ページ操作中のコード実行を追跡し、特定の機能に費やされたコード実行が全体に占める割合を報告します。 プロファイリングは、MediaWiki における最適化すべき処理の遅延原因を追跡するために、開発者やシステム管理者向けに用意されている高度な作業です。
PHP プロファイリング
Tideways または XDebug を使用できます。これらの PHP 拡張はトレースやプロファイリング機能を提供します。
Tideways は結果を視覚化する専用 UI も提供していますが、それを使う必要はありません。
Debian や Ubuntu では php-tideways
パッケージを、macOS では Homebrew をインストールしてください。
XDebug については、XDebug プロファイリングのドキュメント を参照してください。
For command line scripts, you can use php -d xdebug.mode=profile maintenance/{script}
.
Webgrind can then be used to view profile results.
MediaWiki カスタム プロファイラー
wfProfileIn
/wfProfileOut
) are deprecated, were no-ops since MediaWiki 1.25+, and were removed in 1.31.MediaWiki バージョン: | ≧ 1.25 |
In MediaWiki 1.25 profiling was completely rewritten and many settings previous relating to profiling were removed in favor of consolidating them as parameters to $wgProfiler. Notably, output has been separated from class types. For documentation about profiling prior to 1.25, see an older version of this page.
Example $wgProfiler configuration:
<?php
$wgProfiler['class'] = 'ProfilerXhprof';
$wgProfiler['output'] = [ 'ProfilerOutputText' ];
$wgProfiler['visible'] = true;
Each of these parameters (and more) are described in detail:
- class
- 'ProfilerXhprof'. ProfilerXhprof is new in MediaWiki 1.25 and provides an Xhprof-backed profiler that captures profiling data for all functions as well as sub-functional units. Old values such as ProfilerStandard, ProfilerUDP, ProfilerDB, etc do not work. Even if you are using Tideways, still specify the ProfilerXhprof class.
- output
- One or more of 'ProfilerOutputText', 'ProfilerOutputDump', 'ProfilerOutputStats'.[1] Text outputs the information in either HTML comments or after the skin. UDP is a format send to a udpprofile daemon. Dump produces a dump of the profiling info for use with xhprof GUI (xhprofgui role on Vagrant setup).
- outputDir
- Only applies to 'ProfilerOutputDump' format. Required to specify where the dump files will be stored.
- visible
- Only applies to 'ProfilerOutputText' format. Whether text is shown after the skin or in an HTML comment.
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
.
Troubleshooting
If you get "Fatal error: Uncaught Exception: Neither xhprof nor tideways are installed" then you need to do:
$ sudo apt install php-tideways
$ sudo service apache2 restart
If you still get an error, then take a look at https://tideways.com/profiler/xhprof-for-php7
出力
テキストをこのように出力します
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
...
The first column is the time percent; the second column is the time (in ms); the third column is the count; and the fourth column is the name of the method.
関連項目
脚注
- ↑ To learn about ProfilerOutputDump, see git #750e4eb9
Code steward
- MediaWiki Platform Team が保守しています。
- ライブ チャット (IRC): #mediawiki-core 接続
- 問題点追跡: Phabricator MediaWiki-Core-Profiler (問題点を報告) Category:Performance tuning/ja Category:MediaWiki development/ja