Page MenuHomePhabricator

"This namespace is reserved for content page translations" when trying to translate a recently created translation unit
Open, HighPublic

Description

Sometimes translators are unable to save translations due to error "This namespace is reserved for content page translations". This error should not happen in regular use, only in edge cases such as someone keeping a page open so long that the translatable page has changed in meanwhile, or manually editing URLs.

General causes

The underlying cause is a mismatch of the state in MessageIndex versus MessageCollection. MessageIndex is a reverse map of translation unit names to message groups. MessageCollection asks the message group directly what are the names of translation units in that group.

Every time there is a change to translation units, the code is supposed to run a MessageIndexRebuildJob. If this job is not run, or is delayed, or fails, then we get a mismatch of state.

There is additional check on the Translations namespace that prevents editing of translation units that do not correspond to any translatable pages. This is just to keep things tidy to avoid mistakes when people manipulate URLs by hand. Nothing bad would happen if this check was not there.

This issue happens on newly created translation units, or pages newly added for translations.

Current causes

We believe that currently this issue manifests when MessageIndexRebuildJob fails due to Exception: MessageIndex: unable to acquire lock. This means that some other MessageIndexRebuildJob is keeping the table locked for a long time. https://grafana.wikimedia.org/d/000000400/jobqueue-eventbus?orgId=1&from=now%2FM&to=now%2FM&var-site=All&var-type=MessageIndexRebuildJob provides some insight how long the job takes when run in JobQueue (but it is often run as part of other jobs as well).

This is happening when a lot of pages are marked for translations in a short time period. Given each update takes about 20 seconds, even three pages can cause the lock to time out after 30 seconds (first job 0-20s, second job 20-40s, third job fails at 30s).

Another case were this can happen is when MessageIndex is out of date, which can easily spawn a lot of jobs. Further debugging is needed to see if there is anything to fix there.

Options to explore

  • Increase the lock timeout
    • Only makes the problem rarer, could run in job execution time limit
  • Make it faster
    • Would need a profile from production
  • Re-architect to allow concurrency or incremental updates or combining multiple jobs
    • Likely a lot of work

Currently being done:

  • Some low hanging fruit to make the rebuild faster
  • Enabled de-duplication of jobs that are run via the job queue and using the job queue in more places
  • Investigating message index out of date condition frequency and causes

Workaround

Any other activity that makes the MessageIndexRebuildJob run again will "heal" the MessageIndex by making it up to date again. This is most easily accomplished by doing a dummy edit on any translatable page and marking it for translation. Sometimes just waiting a bit can help if the job is just slow or delayed.

We added a front-cache that temporarily caches newly added keys until the job finishes running. This mostly alleviates the user facing issues about the error, however message group stats and translation pages get out of sync every time the job fails in middle due to the lock timeout exception.

QA plan

Affected projects: Multilingual Wikimedia projects
Pre-deployment testing: skip
Post-deployment testing:

  • monitor Logstash for this error for 7 days after deployment to confirm the error MessageIndex: unable to acquire lock is fully gone or extremely infrequent
  • Check for performance improvements per T221119#6162764
  • Check Translate channel in Logstash for messages about MessageIndex

Expected outcome

Translators are able to translate pages recently marked for translation and Translate has less production issues related to message index.

Related Objects

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Wladek92 added a comment.EditedNov 7 2019, 11:43 AM

When the previous side effect appears, translation is accepted but when reloading the page (even with purge action) the translated text does not appear. Returning to the message, translation is present and warning panel 'Title does not correspond to a translatable message' displays again.
see => https://www.mediawiki.org/w/index.php?title=Translations:Skin:Timeless/23/fr&oldid=3499936
Applying Dummy Update on the root EN page unlocks the situation and previously translated text is now present in the generated text without new update of the message.
=>https://www.mediawiki.org/w/index.php?title=Skin:Timeless&diff=3499938&oldid=3499922&diffmode=source

Seems 'random' behaviour since sometimes rendering is ok immediatly

Change 549422 merged by jenkins-bot:
[mediawiki/extensions/Translate@master] Allow editing of orphaned translation units

https://gerrit.wikimedia.org/r/549422

You are correct. My change makes it so that saving is possible, but the rest of the system, including translation aids, still depend on the message index being up to date.

According to the logs, it seems more and more likely that T221119#5634547 needs further investigation.

Yes I confirm new articles can now be saved just after 'translation requested' has been executed (which allow to progress in the article list => good) but they are not yet rendered; a 'Dummy update' of the root page is needed to see all translations together.

4nn1l2 added a subscriber: 4nn1l2.Nov 15 2019, 6:24 AM
Eihel added a comment.EditedNov 15 2019, 12:28 PM

When the previous side effect appears, translation is accepted but when reloading the page (even with purge action) the translated text does not appear. Returning to the message, translation is present and warning panel 'Title does not correspond to a translatable message' displays again.
see => https://www.mediawiki.org/w/index.php?title=Translations:Skin:Timeless/23/fr&oldid=3499936
Applying Dummy Update on the root EN page unlocks the situation and previously translated text is now present in the generated text without new update of the message.
=>https://www.mediawiki.org/w/index.php?title=Skin:Timeless&diff=3499938&oldid=3499922&diffmode=source

Seems 'random' behaviour since sometimes rendering is ok immediatly

Hello,
On WD too, nulledit on original en version and that works: https://www.wikidata.org/w/index.php?title=Wikidata:Requests_for_permissions/Administrator&diff=prev&oldid=1053175618&diffmode=source for french translation: https://www.wikidata.org/wiki/Wikidata:Requests_for_permissions/Administrator/Header/fr.
Sincerely.

I observe back now 'normal' behaviour of the functionality; situation is stable in a positive way and has improved for these last few days. : generation of articles to translate is done in one shot operation, immediate integration of translated articles just after translation and reload. Thanks.

Pols12 added a subscriber: Pols12.Nov 27 2019, 7:11 PM

I observe back now 'normal' behaviour of the functionality; situation is stable in a positive way and has improved for these last few days. : generation of articles to translate is done in one shot operation, immediate integration of translated articles just after translation and reload. Thanks.

Oh, unfortunately, I just encountered “Title does not correspond to a translatable message”, trying to translate meta:Community Tech/Who Wrote That tool.

Wladek92 added a comment.EditedNov 28 2019, 11:52 AM

A lot of translated messages do not appear after page purge and reload (but problem of title message has not appear since a long time) . Workaround: doing the dummy update on root EN page to unlock all at once

12:49, 28 November 2019 Wladek92 talk contribs marked Help:RevisionDelete for translation
Wladek92 added a comment.EditedNov 28 2019, 12:03 PM

Response to Pols12 => I can open the page and access to translations (it is long) and have translated a few dates successfully as => === 20 février 2019 === on a french translation => https://meta.wikimedia.org/wiki/Community_Tech/Who_Wrote_That_tool/fr . So your issue has not appeared on my side.

28 novembre 2019 à 12:57 diff hist +1‎ Community Tech/Who Wrote That tool/fr ‎ Created page with "=== 20 février 2019 ===" actuelle

Response to Pols12 => I can open the page and access to translations (it is long) and have translated a few dates successfully as => === 20 février 2019 === on a french translation => https://meta.wikimedia.org/wiki/Community_Tech/Who_Wrote_That_tool/fr . So your issue has not appeared on my side.

It does not appear on this page anymore since I’ve re-marked the page for translation, as Eihel’s workaround.

Arggr even consecutive dummy updates cannot make the translated messages appear (messages are translated but the /FR subpage is not present; ref. => https://www.mediawiki.org/w/index.php?title=Extension:GeoData/geo_tags_table&diff=3566157&oldid=3566151&diffmode=source

Eihel added a comment.EditedDec 13 2019, 6:35 PM

Arggr even consecutive dummy updates cannot make the translated messages appear (messages are translated but the /FR subpage is not present; ref. => https://www.mediawiki.org/w/index.php?title=Extension:GeoData/geo_tags_table&diff=3566157&oldid=3566151&diffmode=source

Hello, see T235027 (not the same Task) and perhaps my comment on this Task with the explanation. That works with a nulledit on the wiki. For you (and for me 'fr'):
Phase: Afficher dans l’éditeur wiki (Click on the link of the corresponding page in the wiki in the Translate tool). Publishing to the wiki brings up the main page. A+

I am not sure if T240518: Some jobs are not being processed / are processed slowly affected Translate jobs, but if it did, marking for translation should work fast now.

Restricted Application added a subscriber: RhinosF1. · View Herald TranscriptDec 18 2019, 12:03 PM

(In reply to the “In Review” column) It still happens, see my recent edit summary.

Pols12 awarded a token.Jan 5 2020, 2:35 PM

I don’t know if anything changed recently, but now I got a “Service Temporarily Unavailable” message (without any further details) when trying to mark https://commons.wikimedia.org/wiki/Template:Wikidata_Infobox/i18n without any changes (diff to be marked for translation), hoping it will finally become translatable (as new translation units are still untranslatable). It became translatable (see my successful translation), but Special:PageTranslation returned the Service Temporarily Unavailable message, and the /i18n page still had the note about changes pending for translation. Reloading Special:PageTranslation (re-POSTing the form) fixed the issue.

abi_ added a comment.Apr 1 2020, 5:59 AM

I'm planning to review the logs to see how often this has been happening recently to identify next steps on this.

It quite frequently happens. As a translation administrator, I always check if this error message appears after I mark a page for translation, and (in case there are new translation units) at least nine times out of ten it does. Although this way there aren’t many log entries as I take immediate steps to resolve the issue for those particular pages, it’s quite embarrassing, and I’m not sure if all translation admins are aware of it (probably they are, given how long-standing this bug is).

I'm suggesting a new plan... consolidate this checking in MessageIndex. To make it performant, I'm suggesting that new keys are cached separately in a volatile cache, which can be cleared after the slow rebuild job has completed.

Change 589847 had a related patch set uploaded (by Nikerabbit; owner: Nikerabbit):
[mediawiki/extensions/Translate@master] MessageIndex: add interim frontend caching

https://gerrit.wikimedia.org/r/589847

Change 589847 merged by jenkins-bot:
[mediawiki/extensions/Translate@master] MessageIndex: add interim frontend caching

https://gerrit.wikimedia.org/r/589847

I'm suggesting a new plan... consolidate this checking in MessageIndex. To make it performant, I'm suggesting that new keys are cached separately in a volatile cache, which can be cleared after the slow rebuild job has completed.

Niklas submitted a patch to do this, and it has been tested and merged. Moving this to recheck after deployment.

Nikerabbit added a comment.EditedMay 5 2020, 8:00 AM

In the past 7 days there has been about 113 instances of MessageIndex: unable to acquire lock, all in the job queue and either inside TranslationsUpdateJob or MessageIndexRebuildJob. I don't see any errors about "Unknown translation page" in Logstash [EDIT: 26 times in past 7 days], which I guess means that our check is working, given that I can confirm the slow-path is getting executed:

My expectation is that the slow-path should get close to zero after the last patch is deployed. It's too early to say yet.

Change 594455 had a related patch set uploaded (by Nikerabbit; owner: Nikerabbit):
[mediawiki/extensions/Translate@master] Instrument MessageIndex::rebuild

https://gerrit.wikimedia.org/r/594455

Change 594455 merged by jenkins-bot:
[mediawiki/extensions/Translate@master] Instrument MessageIndex::rebuild

https://gerrit.wikimedia.org/r/594455

I made a Grafana dashboard for Translate. For now it only contains the slow check graph: https://grafana.wikimedia.org/d/SwE8qB6Wk/translate-extension?orgId=1&from=now-90d&to=now

@Krinkle I'd like to do a profile of MessageIndex::rebuild to see if there is any low hanging fruit. Easiest way to do that for me would be to run the createMessageIndex.php script with profiling, as there is no way to trigger this code path during a web request (and it could time out, as it takes 20s without profiling). I found https://gerrit.wikimedia.org/g/operations/mediawiki-config/+/29ae3d0c53afa3d9c88b0b7d07a0ac3cf014ddc6/wmf-config/profiler.php#93 but it does not work, I guess because https://wikitech.wikimedia.org/wiki/X-Wikimedia-Debug#Plaintext_request_profile says it only works with HHVM. Is there any way I can get a profile in production about this?

Nikerabbit updated the task description. (Show Details)Mon, May 18, 11:46 AM
Wladek92 added a comment.EditedWed, May 20, 10:17 AM

This impacts also other wikis which frozen the translations of new items. This is the case in [Kde https://userbase.kde.org/Special:Version] sleeping for days
MediaWiki 1.31.7 (e5ad47d) 26 mars 2020 à 15:05
Translate 2019-04-24 (0e35cb0) 24 octobre 2019 à 20:14

Is there a workaround from practical point of view, for their admin not to leave this locked situation ? This wiki has no excessive traffic and we cannot speak of real 'concurrence' between translators. Rather it seems the process 'send for translation' remains faulty.

Thanks.

Christian /FR.

Nikerabbit added a comment.EditedWed, May 20, 11:00 AM

@Wladek92 You should update to newer MediaWiki and latest MLEB, preferably to MLEB 2020.07, when it becomes available, which will contain the latest mitigations.

Change 597539 had a related patch set uploaded (by Nikerabbit; owner: Nikerabbit):
[mediawiki/extensions/Translate@master] Split message index rebuild off of TranslationsUpdateJob and enable deduplication

https://gerrit.wikimedia.org/r/597539

Krinkle added a comment.EditedFri, May 22, 4:52 PM

[…] but it does not work, I guess because https://wikitech.wikimedia.org/wiki/X-Wikimedia-Debug#Plaintext_request_profile says it only works with HHVM. Is there any way I can get a profile in production about this?

The doc page mentioned HHVM for the purpose of saying "not PHP5" (later in the sentence). We have debug and plain text profiling on PHP 7.2 via Tideways which should work both via WikimediaDebug/XHGui, via WikimediaDebug/plain text, and via CLI/plain text.

Be sure to run it fom an mwdebug server as XHGui/Tideways are not installed on other servers.

Hasley added a subscriber: Hasley.Sat, May 23, 5:45 AM

Change 597539 merged by jenkins-bot:
[mediawiki/extensions/Translate@master] Split message index rebuild off of TranslationsUpdateJob and enable deduplication

https://gerrit.wikimedia.org/r/597539

4nn1l2 removed a subscriber: 4nn1l2.Mon, May 25, 6:54 AM

Got a text profile output after a bunch of poking around (see T253547 for details):

11855324800.00% 37106.496 1 - MessageIndex::rebuild
21629789850.00% 32595.797 8752 - MessageIndex::checkAndAdd
3953680050.00% 19073.601 10660 - MessageGroupOld::getKeys
4940971100.00% 18819.422 10659 - WikiPageMessageGroup::getDefinitions
5868652650.00% 17373.053 15794 - Wikimedia\Rdbms\Database::select
6807331350.00% 16146.627 15887 - Wikimedia\Rdbms\Database::query
7795130750.00% 15902.615 15887 - Wikimedia\Rdbms\Database::executeQuery
8776173350.00% 15523.467 15887 - Wikimedia\Rdbms\Database::executeQueryAttempt
9673419600.00% 13468.392 15887 - Wikimedia\Rdbms\DatabaseMysqli::doQuery
10628895450.00% 12577.909 5558 - BannerMessageGroup::getKeys
11625662750.00% 12513.255 5558 - Banner::getMessageFieldsFromCache
12530646250.00% 10612.925 15816 - Wikimedia\Rdbms\DBConnRef::__call
13381035150.00% 7620.703 7084 - WANObjectCache::getWithSetCallback
14379370800.00% 7587.416 7084 - WANObjectCache::fetchOrRegenerate
15354256000.00% 7085.120 6360 - Title::getArticleID
16350771900.00% 7015.438 5948 - LinkCache::addLinkObj
17307439200.00% 6148.784 5558 - Banner::getMessageFieldsCacheKey
18302265500.00% 6045.310 5574 - Banner::getName
19301693350.00% 6033.867 5582 - Banner::populateBasicData
20300741052.63% 6014.821 5790 - section.query-m: SELECT trs_key,trs_text FROM `translate_sections` WHERE trs_page = N ORDER BY trs_order
21289503850.00% 5790.077 182 - AggregateMessageGroup::getKeys
22281839500.00% 5636.790 5650 - Wikimedia\Rdbms\DBConnRef::select
23280777450.00% 5615.549 7403 - WANObjectCache::get
24279088100.00% 5581.762 7403 - WANObjectCache::getMulti
25265932850.00% 5318.657 7404 - MediumSpecificBagOStuff::getMulti
26258083300.00% 5161.666 7404 - MemcachedPeclBagOStuff::doGetMulti
27241173900.00% 4823.478 4316 - LinkCache::fetchPageRow
28239673250.00% 4793.465 4346 - Wikimedia\Rdbms\DBConnRef::selectRow
29238289750.00% 4765.795 4346 - Wikimedia\Rdbms\Database::selectRow
30228292750.00% 4565.855 253665 - Wikimedia\Rdbms\ResultWrapper::next
31212738050.00% 4254.761 259622 - Wikimedia\Rdbms\ResultWrapper::fetchObject
32205585753.92% 4111.715 5558 - section.query-m: SELECT tmp_id,tmp_name,tmp_display_anon,tmp_display_account,tmp_archived,tmp_category FROM `cn_templates` `templates` WHERE tmp_name = 'X'
33179576250.00% 3591.525 1 - DatabaseMessageIndex::retrieve
34179140200.00% 3582.804 269538 - Wikimedia\Rdbms\DatabaseMysqlBase::fetchObject
35177594876.29% 3551.898 4279 - section.query-m: SELECT page_id,page_len,page_is_redirect,page_latest,page_restrictions,page_content_model,page_lang FROM `page` WHERE page_namespace = N AND page_title = 'X' LIMIT N
3691247950.00% 1824.959 8 - Banner::{closure}
3791246600.00% 1824.932 8 - Banner::extractMessageFields
3881693450.00% 1633.869 8 - Parser::parse
3968743600.00% 1374.872 15934 - Wikimedia\Rdbms\LoadBalancer::getConnection
4062811800.00% 1256.236 15794 - Wikimedia\Rdbms\Database::selectSQLText
4156427850.00% 1128.557 8 - Parser::internalParse
4249554400.00% 991.088 327531 - Wikimedia\AtEase\AtEase::restoreWarnings
4345141500.00% 902.830 15937 - Wikimedia\Rdbms\LoadBalancer::getServerConnection
4443446500.00% 868.930 556 - Parser::replaceVariables
4542538650.00% 850.773 9902 - wfGetDB
4641849150.00% 836.983 5791 - TranslateUtils::getSafeReadDB
4741845550.00% 836.911 655062 - Wikimedia\AtEase\AtEase::suppressWarnings
4841435200.00% 828.704 194 - PPFrame_Hash::expand
4940456800.00% 809.136 93 - Parser::braceSubstitution
5037631400.00% 752.628 9902 - Wikimedia\Rdbms\LoadBalancer::getMaintenanceConnectionRef
5137201150.00% 744.023 259549 - Wikimedia\Rdbms\ResultWrapper::valid
5235745850.00% 714.917 17464 - MessageGroups::getGroups
5334591850.00% 691.837 17464 - MessageGroups::init
5430317500.00% 606.350 1 - TranslatablePageMessageGroupStore::getGroups
5530067650.00% 601.353 1 - TranslatablePageMessageGroupStore::initGroupsFromTitle
5628678900.00% 573.578 15794 - Wikimedia\Rdbms\Database::tableNamesWithIndexClauseOrJOIN
5728502250.00% 570.045 77 - MessageCache::{closure}
5827062100.00% 541.242 212 - WANObjectCache::getWithSetCallback@1
5926960000.00% 539.200 212 - WANObjectCache::fetchOrRegenerate@1
6026420550.00% 528.411 513214 - Wikimedia\Rdbms\ResultWrapper::current
6126165650.00% 523.313 5566 - CNDatabase::getDb
6225459200.00% 509.184 16052 - Wikimedia\Rdbms\Database::tableNameWithAlias
6324404650.00% 488.093 269538 - Wikimedia\Rdbms\DatabaseMysqli::mysqlFetchObject
6424350800.00% 487.016 5856 - Title::newFromText
6524028400.00% 480.568 8 - Parser::internalParseHalfParsed
6623669300.00% 473.386 5856 - Title::newFromTextThrow
6723535900.00% 470.718 5858 - BagOStuff::getWithSetCallback
6823007350.00% 460.147 16052 - Wikimedia\Rdbms\Database::tableName
6921195950.00% 423.919 15887 - MWLBFactory::{closure}
7020559000.00% 411.180 15937 - Wikimedia\Rdbms\LoadBalancer::getLocalConnection
7118538400.00% 370.768 15936 - SectionProfileCallback::__destruct
7218098000.00% 361.960 8 - MWTidy::tidy
7318079750.00% 361.595 8 - MediaWiki\Tidy\RemexDriver::tidy
7418059300.00% 361.186 49 - Parser::getTemplateDom
7517936600.00% 358.732 184 - MediaWiki\Revision\RevisionStore::MediaWiki\Revision\{closure}
7617833650.00% 356.673 15887 - ProfilerXhprof::scopedProfileIn
7717636850.00% 352.737 131 - Parser::callParserFunction
7817616000.00% 352.320 8 - RemexHtml\Tokenizer\Tokenizer::execute
7917445900.00% 348.918 182 - AggregateMessageGroup::getGroups
8017225850.00% 344.517 81 - CoreParserFunctions::intFunction
8117189000.00% 343.780 8 - RemexHtml\Tokenizer\Tokenizer::executeInternal
8217154950.00% 343.099 8 - RemexHtml\Tokenizer\Tokenizer::dataState
8317099400.00% 341.988 82 - Message::toString
8417097000.00% 341.940 81 - Message::plain
8517067600.00% 341.352 82 - Message::fetchMessage
8617016800.00% 340.336 82 - MessageCache::get
8716765950.00% 335.319 82 - MessageCache::getMessageFromFallbackChain
8816756900.00% 335.138 82 - MessageCache::getMessageForLang
8916712000.00% 334.240 82 - MessageCache::getMsgFromNamespace
9016670400.00% 333.408 15936 - SectionProfiler::profileOutInternal
9116494850.00% 329.897 5856 - Title::secureAndSplit
9216165600.00% 323.312 26126 - Wikimedia\Rdbms\DatabaseMysqlBase::numRows
9315921750.00% 318.435 63 - MessageCache::loadCachedMessagePageEntry
9415921000.00% 318.420 15936 - SectionProfiler::scopedProfileIn
9515801000.00% 316.020 49 - Parser::fetchTemplateAndTitle
9615719000.00% 314.380 49 - Parser::statelessFetchTemplate
9714860650.00% 297.213 301536 - Wikimedia\Rdbms\ResultWrapper::unwrap
9814726800.00% 294.536 285433 - Wikimedia\Rdbms\DatabaseMysqli::lastErrno
9914637850.00% 292.757 63 - MediaWiki\Revision\RevisionStore::getKnownCurrentRevision
10014256450.00% 285.129 81 - MediaWiki\Revision\RevisionRecord::getContent
10113810900.00% 276.218 6435 - Hooks::run
10213785450.00% 275.709 5798 - Wikimedia\Rdbms\LoadBalancer::isMasterConnectionReadOnly
10313780150.00% 275.603 15937 - Wikimedia\Rdbms\DatabaseDomain::isCompatible
10412551500.00% 251.030 63744 - SectionProfiler::getTime
10511633550.00% 232.671 6443 - MediaWiki\HookContainer\HookContainer::run
10611459150.00% 229.183 1 - WorkflowStatesMessageGroup::getDefinitions
10711291000.00% 225.820 223822 - TranslateUtils::normaliseKey
10811240650.00% 224.813 120704 - TPSection::getTextWithVariables
10910962850.00% 219.257 271378 - Wikimedia\Rdbms\ResultWrapper::getDB
11010961550.00% 219.231 15887 - Wikimedia\Rdbms\DatabaseMysqlBase::lastError
11110812250.00% 216.245 5858 - MediaWikiTitleCodec::splitTitleString
11210166950.00% 203.339 43 - WANObjectCache::getWithSetCallback@2
11310137350.00% 202.747 43 - WANObjectCache::fetchOrRegenerate@2
11410069700.00% 201.394 16089 - Wikimedia\Rdbms\DatabaseDomain::newFromId
11510014600.00% 200.292 16052 - Wikimedia\Rdbms\Database::qualifiedTableComponents
1169771250.00% 195.425 7265 - WANObjectCache::worthRefreshPopular
1179668750.00% 193.375 5844 - LinkCache::addGoodLinkObjFromRow
1189499450.00% 189.989 16125 - Wikimedia\Rdbms\Database::makeList
1199167150.00% 183.343 15936 - SectionProfiler::profileInInternal
1209068000.00% 181.360 11871 - MediaWikiTitleCodec::getPrefixedDBkey
1218959250.00% 179.185 15777 - Wikimedia\Rdbms\Database::fieldNamesWithAlias
1228898293.97% 177.966 1 - section.query-m: SELECT * FROM `translate_messageindex`
1238698800.00% 173.976 456 - AutoLoader::autoload
1248173400.00% 163.468 5791 - MessageGroupOld::getMessageGroupStates
1258170350.00% 163.407 49 - Parser::fetchCurrentRevisionOfTitle
1268110700.00% 162.214 49 - Parser::fetchCurrentRevisionRecordOfTitle
1277949950.00% 158.999 49 - Parser::statelessFetchRevisionRecord
1287817900.00% 156.358 5884 - Wikimedia\Rdbms\ResultWrapper::rewind
1297792850.00% 155.857 182 - MessageGroups::expandWildcards
1307694400.00% 153.888 6256 - MediaWiki\HookContainer\HookContainer::callLegacyHook
1317639200.00% 152.784 12295 - Title::prefix
1327628300.00% 152.566 15887 - Wikimedia\Rdbms\GeneralizedSql::stringify
1337579150.00% 151.583 5790 - WikiPageMessageGroup::makeGroupKeys
1347495900.00% 149.918 81 - MediaWiki\Revision\SlotRecord::getContent
1357437850.00% 148.757 81 - MediaWiki\Revision\RevisionStore::loadSlotContent
1367418900.00% 148.378 18773 - MediumSpecificBagOStuff::resolveSegments
1377162000.00% 143.240 71 - MediaWiki\Storage\SqlBlobStore::getBlob
1387154950.00% 143.099 49 - Revision::getContent
1397001700.00% 140.034 131620 - MessageIndex::unserialize
1406913150.00% 138.263 432 - PPFrame_Hash::expand@1
1416891750.00% 137.835 26204 - Wikimedia\Rdbms\LoadBalancer::resolveDomainID
1426830550.00% 136.611 53745 - Wikimedia\Services\ServiceContainer::getService
1436825900.00% 136.518 5878 - MediumSpecificBagOStuff::get
1446708800.00% 134.176 81 - MediaWiki\Revision\RevisionRecord::getSlot
1456671850.00% 133.437 81 - MediaWiki\Revision\RevisionSlots::getSlot
1466661700.00% 133.234 81 - MediaWiki\Revision\RevisionSlots::getSlots
1476585100.00% 131.702 7447 - Monolog\Logger::debug
1486547650.00% 130.953 71 - MediaWiki\Revision\RevisionStore::loadSlotRecords
1496319500.00% 126.390 5558 - Wikimedia\Rdbms\DBConnRef::fetchObject
1506272650.00% 125.453 41889 - Wikimedia\Rdbms\DatabaseMysqli::getBindingHandle
1516241050.00% 124.821 20288 - Wikimedia\Rdbms\Database::addQuotes
1526110450.00% 122.209 39 - PPTemplateFrame_Hash::cachedExpand
1536038250.00% 120.765 4258 - RemexHtml\Tokenizer\Tokenizer::emitDataRange
1545973450.00% 119.469 7509 - Monolog\Logger::addRecord
1555859650.00% 117.193 15887 - Wikimedia\Rdbms\Database::affectedRows
1565615650.00% 112.313 17456 - MessageGroups::getGroup
1575584250.00% 111.685 7246 - WANObjectCache::makeKey
1585568700.00% 111.374 3621 - RemexHtml\TreeBuilder\Dispatcher::characters
1595550250.00% 111.005 1 - MessageIndex::getArrayDiff
1605490300.00% 109.806 8 - Banner::getBodyContent
1615488400.00% 109.768 8 - Banner::populateBodyContent
1625454450.00% 109.089 4827 - Title::getNsText
1635447700.00% 108.954 15934 - Wikimedia\Rdbms\LoadBalancer::getConnectionIndex
1645393100.00% 107.862 11809 - MapCacheLRU::set
1655363800.00% 107.276 6456 - Title::getPrefixedDBkey
1665166500.00% 103.330 15887 - Wikimedia\Rdbms\GeneralizedSql::generalizeSQL
1675121100.00% 102.422 15887 - Wikimedia\Rdbms\Database::isWriteQuery
1685117650.00% 102.353 15934 - Wikimedia\Rdbms\LoadBalancer::getReaderIndex
1695103650.00% 102.073 15794 - Wikimedia\Rdbms\Database::makeSelectOptions
1704980750.00% 99.615 8731 - MessageGroups::getPriority
1714918950.00% 98.379 25 - MediaWiki\Storage\SqlBlobStore::MediaWiki\Storage\{closure}
1724900350.00% 98.007 8 - BlockLevelPass::doBlockLevels
1734897750.00% 97.955 8 - BlockLevelPass::execute
1744812100.00% 96.242 9238 - MediaWikiTitleCodec::getNamespaceName
1754799600.00% 95.992 2139 - RemexHtml\TreeBuilder\Dispatcher::startTag
1764713900.00% 94.278 15887 - Wikimedia\Rdbms\Database::assertQueryIsCurrentlyAllowed
1774707200.00% 94.144 97 - WANObjectCache::set
1784623750.00% 92.475 332 - Parser::preprocessToDom
1794622793.20% 92.456 71 - section.query-m: SELECT slot_revision_id,slot_content_id,slot_origin,slot_role_id,content_size,content_sha1,content_address,content_model FROM `slots` JOIN `content` ON ((slot_content_id = content_id)) WHERE slot_revision_id = 'X'
1804612750.00% 92.255 37 - LinkCache::{closure}
1814602550.00% 92.051 5884 - Wikimedia\Rdbms\ResultWrapper::numRows
1824556350.00% 91.127 332 - Preprocessor_Hash::preprocessToObj
1834542050.00% 90.841 7322 - MediumSpecificBagOStuff::makeKey
1844528500.00% 90.570 3529 - RemexHtml\TreeBuilder\InBody::characters
1854471500.00% 89.430 8 - Parser::handleMagicLinks
1864413050.00% 88.261 10115 - Wikimedia\Rdbms\DatabaseMysqlBase::strencode
1874326450.00% 86.529 16052 - Wikimedia\Rdbms\Database::relationSchemaQualifier
1884237750.00% 84.755 11879 - MediaWikiTitleCodec::formatTitle
1894235100.00% 84.702 5790 - TranslatablePage::getMessageGroupIdFromTitle
1904217200.00% 84.344 35 - Parser::braceSubstitution@1
1914206950.00% 84.139 5797 - Wikimedia\Rdbms\LoadBalancer::getLaggedReplicaMode
1924180650.00% 83.613 2111 - RemexHtml\TreeBuilder\Dispatcher::endTag
1934176400.00% 83.528 15887 - Wikimedia\Rdbms\DatabaseMysqli::fetchAffectedRowCount
1944145700.00% 82.914 10143 - Wikimedia\Rdbms\DBConnRef::__destruct
1954111800.00% 82.236 705 - Parser::magicLinkCallback
1964072200.00% 81.444 43 - Parser::makeFreeExternalLink
1974060350.00% 81.207 2067 - RemexHtml\TreeBuilder\InBody::startTag
1984059650.00% 81.193 3529 - RemexHtml\TreeBuilder\InBody::RemexHtml\TreeBuilder\{closure}
1993955250.00% 79.105 30 - MediaWiki\Revision\RevisionStore::fetchRevisionRowFromConds
2003850000.00% 77.000 73 - Wikimedia\Rdbms\Database::getCacheSetOptions
2013812800.00% 76.256 15936 - SectionProfiler::updateEntry
2023783950.00% 75.679 9 - MediaWiki\Storage\SqlBlobStore::fetchBlobs
2033774850.00% 75.497 73 - Wikimedia\Rdbms\DBConnRef::getSessionLagStatus
2043765950.00% 75.319 76433 - Wikimedia\Rdbms\Database::fieldNameWithAlias
2053762750.00% 75.255 21850 - Wikimedia\Rdbms\Database::dbSchema
2063758050.00% 75.161 15887 - Wikimedia\Rdbms\Database::resultObject
2073751450.00% 75.029 73 - Wikimedia\Rdbms\Database::getSessionLagStatus
2083747250.00% 74.945 5839 - Title::getPrefixedText
2093724350.00% 74.487 74 - Wikimedia\Rdbms\DatabaseMysqlBase::getApproximateLagStatus
2103707050.00% 74.141 74 - Wikimedia\Rdbms\Database::getApproximateLagStatus
2113692700.00% 73.854 73 - Wikimedia\Rdbms\Database::getLag
2123691250.00% 73.825 15794 - Wikimedia\Rdbms\Database::beginIfImplied
2133683800.00% 73.676 73 - Wikimedia\Rdbms\DatabaseMysqlBase::doGetLag
2143664900.00% 73.298 73 - Wikimedia\Rdbms\DatabaseMysqlBase::getLagFromPtHeartbeat
2153642250.00% 72.845 43 - Linker::makeExternalLink
2163618900.00% 72.378 7408 - MemcachedBagOStuff::makeKeyInternal
2173562200.00% 71.244 73 - Wikimedia\Rdbms\DatabaseMysqlBase::getHeartbeatData
2183506600.00% 70.132 2033 - RemexHtml\TreeBuilder\InBody::endTag
2193480600.00% 69.612 21486 - MediaWiki\MediaWikiServices::getDBLoadBalancer
2203467500.00% 69.350 10115 - Wikimedia\Rdbms\DatabaseMysqli::mysqlRealEscapeString
2213409200.00% 68.184 332 - Preprocessor::cacheGetTree
2223380200.00% 67.604 9902 - wfGetLB
2233377100.00% 67.542 43 - MediaWiki\SecureLinkFixer\Hooks::onLinkerMakeExternalLink
2243353700.00% 67.074 16 - Wikimedia\Services\ServiceContainer::createService
2253347950.00% 66.959 2 - MediaWiki\SecureLinkFixer\HSTSPreloadLookup::getInstance
2263284800.00% 65.696 90 - MediumSpecificBagOStuff::add
2273261350.00% 65.227 8 - Parser::handleAllQuotes
2283243900.00% 64.878 85 - MemcachedPeclBagOStuff::doAdd
2293238642.22% 64.773 31 - section.query-m: SELECT rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid
2303178850.00% 63.577 2146 - RemexHtml\TreeBuilder\TreeBuilder::insertElement
2313044150.00% 60.883 8 - MediaWiki\Revision\RevisionStore::getRevisionByTitle
2323032300.00% 60.646 53725 - MediaWiki\MediaWikiServices::getInstance
2333031100.00% 60.622 3621 - RemexHtml\TreeBuilder\TreeBuilder::insertCharacters
2343005200.00% 60.104 10146 - Wikimedia\Rdbms\LoadBalancer::reuseConnection
2352989100.00% 59.782 8 - MediaWiki\Revision\RevisionStore::loadRevisionFromConds
2362959050.00% 59.181 2146 - RemexHtml\TreeBuilder\TreeBuilder::insertForeign
2372947900.00% 58.958 63548 - Wikimedia\Rdbms\Database::fieldHasBit
2382918700.00% 58.374 19896 - ExplodeIterator::next
2392914000.00% 58.280 68368 - Wikimedia\Rdbms\DatabaseDomain::getId
2402890150.00% 57.803 18 - MediaWiki\Storage\SqlBlobStore::expandBlob
2412889000.00% 57.780 15936 - SectionProfileCallback::__construct
2422857160.57% 57.143 73 - section.query-m: SELECT ts FROM heartbeat.heartbeat WHERE shard = 'X' ORDER BY ts DESC LIMIT N
2432847000.00% 56.940 1 - MessageIndex::clearMessageGroupStats
2442771900.00% 55.438 69646 - Wikimedia\Rdbms\LoadBalancer::getWriterIndex
2452768850.33% 55.377 1 - section.query-m: SELECT tgr_group,tgr_state FROM `translate_groupreviews` WHERE tgr_lang = 'X'
2462756850.00% 55.137 1 - JobQueueGroup::push
2472708950.00% 54.179 5858 - NamespaceInfo::isCapitalized
2482707900.00% 54.158 81 - MediaWiki\Revision\RevisionStore::newRevisionFromRowAndSlots
2492689400.00% 53.788 1865 - RemexHtml\TreeBuilder\TreeBuilder::generateImpliedEndTagsAndPop
2502687050.00% 53.741 8 - Parser::handleTables
2512678700.00% 53.574 5810 - HashBagOStuff::doGet
2522654650.00% 53.093 8 - Sanitizer::removeHTMLtags
2532648550.00% 52.971 7403 - WANObjectCache::unwrap
2542628350.00% 52.567 18773 - SerializedValueContainer::isUnified
2552615050.00% 52.301 7403 - WANObjectCache::processCheckKeys
2562610700.00% 52.214 71 - MediaWiki\Revision\RevisionStore::newRevisionFromRow
2572603400.00% 52.068 10160 - LinkCache::isCacheable
2582597450.00% 51.949 31774 - Wikimedia\Rdbms\DatabaseMysqli::mysqlError
2592585750.00% 51.715 15887 - Wikimedia\Rdbms\Database::getQueryVerb
2602565450.00% 51.309 1 - JobQueue::push
2612565300.00% 51.306 1 - JobQueue::batchPush
2622564400.00% 51.288 1 - MediaWiki\Extension\EventBus\Adapters\JobQueue\JobQueueEventBus::doBatchPush
2632501900.00% 50.038 47813 - Wikimedia\Rdbms\Database::trxLevel
2642474500.00% 49.490 30040 - MapCacheLRU::has
2652436400.00% 48.728 15940 - Wikimedia\Rdbms\DatabaseDomain::decode
2662421350.00% 48.427 7411 - Monolog\Handler\GroupHandler::isHandling
2672386650.00% 47.733 15887 - Wikimedia\Rdbms\TransactionProfiler::recordQueryCompletion
2682371100.00% 47.422 7 - WANObjectCache::getWithSetCallback@3
2692369550.00% 47.391 1922 - RemexHtml\TreeBuilder\TreeBuilder::popAllUpToName
2702361750.00% 47.235 7 - WANObjectCache::fetchOrRegenerate@3
2712337250.00% 46.745 16030 - Wikimedia\Rdbms\Database::getDomainID
2722335700.00% 46.714 41889 - Wikimedia\Rdbms\Database::getBindingHandle
2732316550.00% 46.331 1 - ExtensionRegistry::loadFromQueue
2742284850.00% 45.697 26204 - Wikimedia\Rdbms\LoadBalancer::resolveDomainInstance
2752266950.00% 45.339 15938 - Wikimedia\Rdbms\DatabaseDomain::equals
2762254950.00% 45.099 15889 - Wikimedia\Rdbms\Database::assertHasConnectionHandle
2772236450.00% 44.729 3621 - MediaWiki\Tidy\RemexCompatMunger::characters
2782210400.00% 44.208 15890 - Wikimedia\Rdbms\Database::writesOrCallbacksPending
2792208550.00% 44.171 18773 - SerializedValueContainer::isSegmented
2802208150.00% 44.163 426 - PPNode_Hash_Tree::splitRawTemplate
2812171400.00% 43.428 16052 - Wikimedia\Rdbms\Database::tablePrefix
2822118350.00% 42.367 798 - PPNode_Hash_Tree::__construct
2832093800.00% 41.876 21926 - Wikimedia\Rdbms\DatabaseMysqlBase::addIdentifierQuotes
2842029450.00% 40.589 12119 - MapCacheLRU::get
2852027700.00% 40.554 32104 - Wikimedia\Rdbms\DatabaseMysqlBase::isQuotedIdentifier
2861999750.00% 39.995 9238 - Language::needsGenderDistinction
2871960800.00% 39.216 15934 - Wikimedia\Rdbms\LoadBalancer::sanitizeConnectionFlags
2881954000.00% 39.080 5791 - TranslateUtils::shouldReadFromMaster
2891913150.00% 38.263 52518 - StringMatcher::match
2901877000.00% 37.540 5966 - MediumSpecificBagOStuff::makeGlobalKey
2911875400.00% 37.508 4827 - Title::getTitleFormatter
2921840100.00% 36.802 8 - ExternalStoreAccess::fetchFromURL
2931799050.00% 35.981 2153 - Language::getNsIndex
2941786250.00% 35.725 2 - MultiHttpClient::run
2951785850.00% 35.717 2 - MultiHttpClient::runMulti
2961783400.00% 35.668 2 - MultiHttpClient::runMultiCurl
2971780600.00% 35.612 8 - ExternalStoreDB::fetchFromURL
2981778000.00% 35.560 8 - ExternalStoreDB::fetchBlob
2991743450.00% 34.869 5872 - Wikimedia\Rdbms\DatabaseMysqlBase::dataSeek
3001738429.07% 34.769 37 - section.query-m: SELECT page_id,page_len,page_is_redirect,page_latest,page_restrictions,page_content_model,page_lang,page_touched FROM `page` WHERE page_namespace = N AND page_title = 'X' LIMIT N
3011725000.00% 34.500 5858 - TitleValue::assertValidSpec
3021723700.00% 34.474 2119 - MediaWiki\Tidy\RemexCompatMunger::endTag
3031715450.00% 34.309 31702 - Wikimedia\Rdbms\Database::getFlag
3041704100.00% 34.082 15081 - WANObjectCache::getCurrentTime
3051638750.00% 32.775 1 - MediaWiki\Extension\EventBus\EventBus::send
3061636650.00% 32.733 241 - Wikimedia\Rdbms\LoadBalancer::getConnectionRef
3071621700.00% 32.434 37546 - SerializedValueContainer::instanceOf
3081610850.00% 32.217 5650 - WANObjectCache::parsePurgeValue
3091598700.00% 31.974 31844 - Wikimedia\Rdbms\Database::isOpen
3101576400.00% 31.528 2154 - MediaWiki\Tidy\RemexCompatMunger::insertElement
3111575200.00% 31.504 7403 - WANObjectCache::makeSisterKeys
3121568600.00% 31.372 32104 - Wikimedia\Rdbms\Database::prependDatabaseOrSchema
3131565300.00% 31.306 1 - MessageGroups::getCachedGroupDefinitions
3141564250.00% 31.285 120 - Composer\Autoload\ClassLoader::loadClass
3151563900.00% 31.278 676 - Parser::{closure}
3161542900.00% 30.858 5558 - Banner::fromName
3171542000.00% 30.840 26118 - Wikimedia\Rdbms\DatabaseMysqli::mysqlNumRows
3181527950.00% 30.559 5948 - LinkCache::getGoodLinkID
3191524950.00% 30.499 120 - Composer\Autoload\includeFile
3201501500.00% 30.030 144 - MediaWiki\Revision\RevisionStore::ensureRevisionRowMatchesTitle
3211486250.00% 29.725 13 - Wikimedia\Services\ServiceContainer::createService@1
3221483250.00% 29.665 39 - Wikimedia\Services\ServiceContainer::getService@1
3231479600.00% 29.592 10149 - Wikimedia\Rdbms\LoadBalancer::getRoleFromIndex
3241465350.00% 29.307 34273 - Title::getNamespace
3251456550.00% 29.131 5797 - Wikimedia\Rdbms\LoadBalancer::hasStreamingReplicaServers
3261436550.00% 28.731 16115 - Wikimedia\Rdbms\DatabaseDomain::__construct
3271429600.00% 28.592 8 - MediaWiki\MediaWikiServices::getParser
3281419750.00% 28.395 9238 - Language::getNsText
3291418400.00% 28.368 1 - ExtensionRegistry::readFromQueue
3301407250.00% 28.145 2119 - RemexHtml\Serializer\Serializer::endTag
3311367700.00% 27.354 3621 - RemexHtml\Serializer\Serializer::characters
3321360600.00% 27.212 28975 - Title::isExternal
3331351600.00% 27.032 12 - MediumSpecificBagOStuff::merge
3341348650.00% 26.973 12 - MediumSpecificBagOStuff::mergeViaCas
3351345450.00% 26.909 8 - ParserOptions::newFromContext
3361317800.00% 26.356 5618 - MediaWiki\MediaWikiServices::getMainWANObjectCache
3371298200.00% 25.964 18 - User::getOption
3381294550.00% 25.891 31813 - MessageGroupOld::getId
3391294300.00% 25.886 15794 - Wikimedia\Rdbms\Database::selectOptionsIncludeLocking
3401294050.00% 25.881 15934 - Wikimedia\Rdbms\LoadBalancer::resolveGroups
3411293050.00% 25.861 20292 - Wikimedia\Rdbms\Database::getLBInfo
3421276350.00% 25.527 9 - RequestContext::getLanguage
3431256800.00% 25.136 26 - MediaWiki\User\UserOptionsManager::getOption
3441249300.00% 24.986 26 - MediaWiki\User\UserOptionsManager::loadUserOptions
3451235850.00% 24.717 5948 - LinkCache::isBadLink
3461196000.00% 23.920 15887 - Wikimedia\Rdbms\Database::registerTempWrites
3471193650.00% 23.873 1 - TranslateUtils::getContents
3481187450.00% 23.749 1 - MessageGroups::getGroupLoaders
3491133450.00% 22.669 15879 - Wikimedia\Rdbms\ResultWrapper::__construct
3501131100.00% 22.622 6 - Wikimedia\Rdbms\LoadBalancer::reallyOpenConnection
3511129350.00% 22.587 7517 - MemcachedPeclBagOStuff::checkResult
3521107900.00% 22.158 2123 - RemexHtml\Serializer\Serializer::serializeNode
3531091600.00% 21.832 6440 - MediaWiki\MediaWikiServices::getLinkCache
3541081750.00% 21.635 716 - RemexHtml\TreeBuilder\InPre::characters
3551067850.00% 21.357 5801 - HashBagOStuff::expire
3561066950.00% 21.339 13081 - MemcachedBagOStuff::validateKeyEncoding
3571055850.00% 21.117 26540 - ExplodeIterator::valid
3581043600.00% 20.872 8 - Parser::startParse
3591038200.00% 20.764 5876 - wfUrlencode
3601037100.00% 20.742 8 - Parser::clearState
3611034000.00% 20.680 16006 - Wikimedia\ScopedCallback::__construct
3621028200.00% 20.564 5859 - MediaWiki\MediaWikiServices::getTitleParser
3631027600.00% 20.552 14928 - Monolog\Handler\AbstractHandler::isHandling
3641022400.00% 20.448 19920 - ExplodeIterator::refreshCurrent
365999500.00% 19.990 15891 - Profiler::instance
366997000.00% 19.940 22001 - Wikimedia\Rdbms\DatabaseDomain::getSchema
367981100.00% 19.622 1 - ParserFactory::create
368980900.00% 19.618 5880 - MediumSpecificBagOStuff::makeKeyInternal
369980700.00% 19.614 1 - Parser::__construct
370980500.00% 19.610 9 - Parser::firstCallInit
371965750.00% 19.315 1 - MediaWiki\Revision\RevisionStore::newRevisionsFromBatch
372955550.00% 19.111 4829 - MediaWiki\MediaWikiServices::getTitleFormatter
373954100.00% 19.082 13162 - WANObjectCache::makeSisterKey
374947750.00% 18.955 15794 - Wikimedia\Rdbms\Database::makeOrderBy
375939950.00% 18.799 15934 - Wikimedia\Rdbms\LoadBalancer::getExistingReaderIndex
376933200.00% 18.664 224 - MediaWiki\Revision\RevisionStore::getDBConnectionRef
377929650.00% 18.593 9097 - MessageGroupBase::getId
378923900.00% 18.478 5856 - Sanitizer::decodeCharReferencesAndNormalize
379873250.00% 17.465 6447 - MediaWiki\MediaWikiServices::getHookContainer
380871550.00% 17.431 90 - AutoLoader::autoload@1
381871400.00% 17.428 15887 - Wikimedia\Rdbms\GeneralizedSql::__construct
382863900.00% 17.278 132 - PPFrame_Hash::expand@2
383861350.00% 17.227 15937 - Wikimedia\Rdbms\LoadBalancer::enforceConnectionFlags
384853400.00% 17.068 1 - MediaWiki\Extension\EventBus\EventFactory::createJobEvent
385848100.00% 16.962 12614 - MapCacheLRU::getCurrentTime
386845600.00% 16.912 8 - BannerRenderer::__construct
387845500.00% 16.910 8 - Parser::finalizeHeadings
388843700.00% 16.874 14 - MemcachedPeclBagOStuff::doGet
389840200.00% 16.804 6447 - MediaWiki\HookContainer\HookContainer::getHandlers
390838950.00% 16.779 8 - Wikibase\Client\Hooks\ParserClearStateHookHandler::onParserClearState
391837400.00% 16.748 1 - MediaWiki\Extension\EventBus\EventFactory::createEvent
392835050.00% 16.701 8 - Wikibase\Client\WikibaseClient::getRestrictedEntityLookup
393834850.00% 16.697 15937 - Wikimedia\Rdbms\LoadBalancer::getServerCount
394831150.00% 16.623 8 - Banner::getMixins
395830050.00% 16.601 8 - Banner::populateMixinData
396824950.00% 16.499 1 - WikiMap::getWiki
397824800.00% 16.496 1 - WikiMap::getWikiReferenceFromWgConf
398819150.00% 16.383 15794 - Wikimedia\Rdbms\Database::makeGroupByWithHaving
399817800.00% 16.356 1 - Wikibase\Client\WikibaseClient::getEntityLookup
400817600.00% 16.352 5858 - NamespaceInfo::getSubject
401814600.00% 16.292 1 - SiteConfiguration::loadFullData
402814350.00% 16.287 1 - wmfLoadInitialiseSettings
403810450.00% 16.209 7350 - WANObjectCache::determineKeyClassForStats
404807900.00% 16.158 19896 - ExplodeIterator::current
405792900.00% 15.858 1 - ExtensionRegistry::exportExtractedData
406790200.00% 15.804 1 - MediaWiki\Revision\RevisionStore::getSlotRowsForBatch
407785550.00% 15.711 5804 - Wikimedia\Rdbms\Database::getDBname
408772850.00% 15.457 2148 - MediaWiki\Tidy\RemexCompatFormatter::element
409771450.00% 15.429 17973 - Title::getDBkey
410770450.00% 15.409 13014 - MediaWiki\Config\ServiceOptions::get
411764150.00% 15.283 9261 - LocalisationCache::getItem
412760750.00% 15.215 251 - RemexHtml\Tokenizer\Tokenizer::handleAttribsAndClose
413747350.00% 14.947 17456 - MessageGroups::normalizeId
414742350.00% 14.847 6 - PPTemplateFrame_Hash::cachedExpand@1
415741300.00% 14.826 7447 - WANObjectCache::isValid
416735100.00% 14.702 15937 - Wikimedia\Rdbms\DatabaseDomain::isUnspecified
417735050.00% 14.701 8 - ExternalStoreDB::getReplica
418726900.00% 14.538 5558 - Banner::isValidBannerName
419715950.00% 14.319 10149 - Wikimedia\Rdbms\DBConnRef::__construct
420709300.00% 14.186 8 - Sanitizer::normalizeCharReferences
421709150.00% 14.183 3 - Parser::braceSubstitution@2
422707950.00% 14.159 17 - MediaWiki\User\DefaultOptionsLookup::getDefaultOptions
423700400.00% 14.008 8 - Wikimedia\Rdbms\DBConnRef::selectField
424697000.00% 13.940 8 - Wikimedia\Rdbms\Database::selectField
425695300.00% 13.906 2156 - RemexHtml\Serializer\Serializer::insertElement
426683000.00% 13.660 3 - MessageGroupWANCache::getValue
427671000.00% 13.420 16204 - Wikimedia\Rdbms\DatabaseDomain::getTablePrefix
428658738.61% 13.175 8 - section.query-m: SELECT mixin_name FROM `cn_template_mixins` WHERE tmp_id = N
429654450.00% 13.089 7509 - Monolog\Logger::getLevelName
430653750.00% 13.075 128 - MediaWiki\Languages\LanguageFactory::getLanguage
431653500.00% 13.070 68 - MediaWiki\MediaWikiServices::getContentLanguage
432647750.00% 12.955 12 - MediumSpecificBagOStuff::cas
433641600.00% 12.832 12 - MemcachedPeclBagOStuff::doCas
434635750.00% 12.715 11580 - WikiPageMessageGroup::getTitle
435623750.00% 12.475 6 - Wikimedia\Rdbms\Database::initConnection
436622250.00% 12.445 6 - Wikimedia\Rdbms\Database::doInitConnection
437621350.00% 12.427 6 - Wikimedia\Rdbms\DatabaseMysqlBase::open
438620500.00% 12.410 1 - MediaWiki\Storage\SqlBlobStore::getBlobBatch
439610100.00% 12.202 81 - MediaWiki\Revision\RevisionStore::constructSlotRecords
440609750.00% 12.195 17466 - MessageGroups::singleton
441605400.00% 12.108 548 - Sanitizer::fixTagAttributes
442600250.00% 12.005 6260 - MediaWiki\HookContainer\HookContainer::normalizeHandler
443600004.20% 12.000 8 - section.query-m: SELECT blob_text FROM `blobs_cluster2N` WHERE blob_id = 'X' LIMIT N
444595050.00% 11.901 12413 - Wikimedia\Assert\Assert::parameter
445592700.00% 11.854 5872 - Wikimedia\Rdbms\DatabaseMysqli::mysqlDataSeek
446580100.00% 11.602 7350 - WANObjectCache::resolveCTL
447574200.00% 11.484 5859 - MediaWikiTitleCodec::getTitleInvalidRegex
448570550.00% 11.411 8786 - NamespaceInfo::isContent
449566450.00% 11.329 82 - MessageCache::load
450563950.00% 11.279 116 - Parser::getTargetLanguageConverter
451563950.00% 11.279 23 - Wikimedia\ObjectFactory::getObjectFromSpec
452558450.00% 11.169 127 - Parser::getTargetLanguage
453557400.00% 11.148 332 - PPFrame_Hash::__construct
454554950.00% 11.099 29 - Wikimedia\Services\ServiceContainer::getService@2
455552250.00% 11.045 13 - Wikimedia\Services\ServiceContainer::createService@2
456539950.00% 10.799 12026 - Title::getInterwiki
457537950.00% 10.759 2567 - Language::lc
458535400.00% 10.708 26 - MediaWiki\User\UserOptionsManager::getCacheKey
459534800.00% 10.696 2127 - RemexHtml\TreeBuilder\CachingStack::pop
460529750.00% 10.595 2953 - Sanitizer::normalizeCharReferencesCallback
461527250.00% 10.545 295 - Parser::argSubstitution
462525050.00% 10.501 3719 - RemexHtml\TreeBuilder\TreeBuilder::reconstructAFE
463524350.00% 10.487 28 - User::isRegistered
464521000.00% 10.420 28 - User::getId
465518050.00% 10.361 27 - User::load
466516250.00% 10.325 2127 - RemexHtml\TreeBuilder\CachingStack::push
467510050.00% 10.201 2 - WebRequest::getSession
468509950.00% 10.199 10 - Wikimedia\Rdbms\LoadBalancer::Wikimedia\Rdbms\{closure}
469508250.00% 10.165 10 - Wikimedia\Rdbms\DatabaseMysqlBase::serverIsReadOnly
470492600.00% 9.852 9240 - Language::getNamespaces
471490050.00% 9.801 120 - ExtensionProcessor::extractInfo
472488650.00% 9.773 8522 - Parser::doQuotes
473488500.00% 9.770 3 - Wikimedia\Rdbms\LoadBalancer::pickReaderIndex
474486900.00% 9.738 1 - User::loadFromSession
475484150.00% 9.683 1 - MediaWiki\Session\SessionManager::getSessionForRequest
476481500.00% 9.630 5558 - Banner::setBasicDataDirty
477472550.00% 9.451 11 - Monolog\Handler\WhatFailureGroupHandler::handle
478469500.00% 9.390 130 - PPFrame_Hash::newChild
479468650.00% 9.373 22 - Monolog\Handler\AbstractProcessingHandler::handle
480467650.00% 9.353 81 - MediaWiki\Revision\RevisionStoreRecord::__construct
481463450.00% 9.269 20 - MediaWiki\MediaWikiServices::getDBLoadBalancerFactory
482462550.00% 9.251 5804 - Wikimedia\Rdbms\Database::setLBInfo
483454700.00% 9.094 127 - Title::getPageLanguage
484453600.00% 9.072 7871 - RemexHtml\TreeBuilder\Dispatcher::dispatcherCurrentNode
485450150.00% 9.003 1 - AggregateMessageGroupLoader::getGroups
486445200.00% 8.904 1 - MediaWiki\MediaWikiServices::getParserFactory
487439350.00% 8.787 2931 - ParserOptions::getOption
488436000.00% 8.720 90 - MediaWiki\Revision\RevisionStore::getDBConnectionRefForQueryFlags
489423850.00% 8.477 4354 - Wikimedia\Rdbms\Database::limitResult
490421800.00% 8.436 8 - RemexHtml\TreeBuilder\Dispatcher::startDocument
491420700.00% 8.414 59 - Monolog\Logger::info
492420150.00% 8.403 120 - MediaWiki\MediaWikiServices::getRevisionLookup
493417300.00% 8.346 130 - PPTemplateFrame_Hash::__construct
494414788.72% 8.296 10 - section.query-m: SELECT @@GLOBAL.read_only AS Value
495414550.00% 8.291 1 - Wikibase\Client\WikibaseClient::getStore
496413600.00% 8.272 3621 - RemexHtml\Serializer\HtmlFormatter::characters
497413450.00% 8.269 8570 - MessageGroupOld::isMeta
498403050.00% 8.061 1 - Wikibase\Client\Store\Sql\DirectSqlStore::getEntityLookup
499402200.00% 8.044 5831 - BagOStuff::getCurrentTime
500400450.00% 8.009 5974 - FundraisingTranslateWorkflow\TranslateHooks::onModifyMessageGroupStates
501399150.00% 7.983 1 - GadgetHooks::userGetDefaultOptions
502398450.00% 7.969 6 - Wikimedia\Rdbms\DatabaseMysqli::mysqlConnect
503397250.00% 7.945 2 - MediaWiki\MediaWikiServices::getRevisionStore
504393652.92% 7.873 8 - section.query-m: SELECT old_id,old_text,old_flags FROM `text` WHERE old_id = N
505391950.00% 7.839 1 - Wikibase\Client\Store\Sql\DirectSqlStore::getEntityRevisionLookup
506391850.00% 7.837 1 - Wikibase\Client\Store\Sql\DirectSqlStore::newEntityRevisionLookup
507385550.00% 7.711 202 - Preprocessor_Hash::newFrame
508385000.00% 7.700 8753 - MessageGroupStates::getStates
509382650.00% 7.653 7526 - MediumSpecificBagOStuff::debug
510381650.00% 7.633 8570 - MessageGroupOld::exists
511373900.00% 7.478 1 - GadgetRepo::getStructuredList
512372300.00% 7.446 7517 - MemcachedPeclBagOStuff::acquireSyncClient
513370650.00% 7.413 6447 - MediaWiki\HookContainer\HookContainer::getLegacyHandlers
514370150.00% 7.403 1 - Wikibase\DataAccess\MultipleEntitySourceServices::getEntityRevisionLookup
515362300.00% 7.246 7265 - WANObjectCache::worthRefreshExpiring
516361700.00% 7.234 5 - Wikibase\DataAccess\SingleEntitySourceServices::getEntityRevisionLookup
517361300.00% 7.226 5856 - Title::setFragment
518358400.00% 7.168 67 - MediaWikiGadgetsDefinitionRepo::loadGadgets
519357750.00% 7.155 4316 - LinkCache::getSelectFields
520357250.00% 7.145 9461 - MessageGroupBase::getFromConf
521356400.00% 7.128 1 - MediaWikiGadgetsDefinitionRepo::getGadgetIds
522355900.00% 7.118 118 - MediaWiki\Logger\LoggerFactory::getInstance
523355200.00% 7.104 2252 - MediaWiki\MediaWikiServices::getNamespaceInfo
524353600.00% 7.072 5817 - HashBagOStuff::hasKey
525352550.00% 7.051 5767 - RemexHtml\TreeBuilder\TreeBuilder::appropriatePlace
526349450.00% 6.989 5775 - MediaWiki\Tidy\RemexCompatMunger::getParentForInsert
527341900.00% 6.838 11 - MediaWiki\Logger\Monolog\LegacyHandler::write
528338400.00% 6.768 8571 - MessageGroupOld::getNamespace
529336350.00% 6.727 1877 - RemexHtml\TreeBuilder\TreeBuilder::closePInButtonScope
530335950.00% 6.719 7120 - DBAccessObjectUtils::hasFlags
531335700.00% 6.714 1 - MessageGroups::initGroupsFromDefinitions
532333300.00% 6.666 5940 - Language::ucfirst
533333100.00% 6.662 1 - MediaWiki\Session\SessionManager::getEmptySession
534332950.00% 6.659 1 - MediaWiki\Session\SessionManager::getEmptySessionInternal
535330600.00% 6.612 7265 - WANObjectCache::isAliveOrInGracePeriod
536327050.00% 6.541 7350 - NullStatsdDataFactory::increment
537322500.00% 6.450 1930 - BlockLevelPass::closeParagraph
538318900.00% 6.378 8753 - MessageGroupStates::__construct
539318500.00% 6.370 2779 - BannerMessageGroup::getMessageGroupStates
540318200.00% 6.364 5777 - RemexHtml\Serializer\Serializer::interpretPlacement
541309900.00% 6.198 5856 - Title::getTitleCache
542306600.00% 6.132 126 - MediaWiki\Logger\MonologSpi::getLogger
543305500.00% 6.110 6100 - NamespaceInfo::isTalk
544302550.00% 6.051 6452 - ExtensionRegistry::getAttribute
545300150.00% 6.003 8 - ParserOutput::getText
546298950.00% 5.979 727 - Sanitizer::decodeTagAttributes
547296750.00% 5.935 1 - RequestContext::getOutput
548295950.00% 5.919 63 - Title::getLatestRevID
549293600.00% 5.872 5878 - MediumSpecificBagOStuff::trackDuplicateKeys
550291400.00% 5.828 23 - MediaWiki\Logger\MonologSpi::createLogger
551289550.00% 5.791 6 - Wikimedia\Rdbms\LoadMonitor::getServerStates
552280350.00% 5.607 253 - RemexHtml\TreeBuilder\InCell::characters
553278800.00% 5.576 5790 - WikiPageMessageGroup::__construct
554278300.00% 5.566 48 - MediaWiki\Interwiki\ClassicInterwikiLookup::isValidInterwiki
555276150.00% 5.523 1 - Wikibase\ClientHooks::onParserFirstCallInit
556272700.00% 5.454 48 - MediaWiki\Interwiki\ClassicInterwikiLookup::fetch
557271400.00% 5.428 183 - MessageGroupBase::getMessageGroupStates
558271050.00% 5.421 5804 - Wikimedia\Rdbms\Database::getServer
559269000.00% 5.380 13 - LCStoreCDB::get
560268793.11% 5.376 1 - section.query-m: SELECT old_id,old_text,old_flags FROM `text` WHERE old_id IN (N,...,N)
561268400.00% 5.368 722 - GlobalVarConfig::get
562268050.00% 5.361 10 - LocalisationCache::loadItem
563264150.00% 5.283 5971 - Wikimedia\Rdbms\DatabaseDomain::getDatabase
564262300.00% 5.246 2153 - NamespaceInfo::getCanonicalIndex
565260850.00% 5.217 6447 - MediaWiki\HookContainer\DeprecatedHooks::getDeprecationInfo
566260150.00% 5.203 146 - RemexHtml\TreeBuilder\InCell::endTag
567259450.00% 5.189 1 - MediaWiki\Languages\LanguageFactory::newFromCode
568258300.00% 5.166 11 - RequestContext::getUser
569255800.00% 5.116 1 - EchoHooks::initEchoExtension
570254900.00% 5.098 179 - Sanitizer::validateTagAttributes
571253550.00% 5.071 1 - MediaWiki\MediaWikiServices::newInstance
572253400.00% 5.068 169 - LocalisationCache::getSubitem
573251900.00% 5.038 1 - Wikimedia\Services\ServiceContainer::loadWiringFiles
574250950.00% 5.019 2 - MediaWiki\Languages\LanguageNameUtils::isValidCode
575250350.00% 5.007 6032 - Title::isSpecialPage
576247500.00% 4.950 5876 - Title::__construct
577246650.00% 4.933 5566 - FauxRequest::wasPosted
578244600.00% 4.892 2567 - Language::isMultibyte
579242550.00% 4.851 548 - Sanitizer::validateTag
580240950.00% 4.819 37 - Wikimedia\Services\ServiceContainer::getService@3
581240250.00% 4.805 5 - LocalisationCache::loadSubitem
582238100.00% 4.762 10 - Wikimedia\Services\ServiceContainer::createService@3
583237300.00% 4.746 41 - MediaWiki\Revision\RevisionStoreCacheRecord::__construct
584232700.00% 4.654 123 - Wikimedia\Timestamp\ConvertibleTimestamp::convert
585232550.00% 4.651 1 - Wikibase\DataAccess\SingleEntitySourceServices::getEntityDeserializer
586230750.00% 4.615 5791 - MessageGroupOld::getWorkflowConfiguration
587227600.00% 4.552 1 - LocalisationCache::getSubitemList
588224950.00% 4.499 35 - MediaWiki\Interwiki\ClassicInterwikiLookup::getInterwikiCached
589222200.00% 4.444 4254 - RemexHtml\TreeBuilder\CachingStack::getScopeTypesToStack
590221650.00% 4.433 2 - MediaWiki\Revision\RevisionStoreFactory::getRevisionStore
591221350.00% 4.427 35 - MediaWiki\Interwiki\ClassicInterwikiLookup::getInterwikiCacheEntry
592221000.00% 4.420 108 - RemexHtml\TreeBuilder\TreeBuilder::adoptionAgency
593216400.00% 4.328 23 - MediaWiki\Logger\MonologSpi::getHandler
594212300.00% 4.246 8 - RequestContext::getSkin
595206300.00% 4.126 1626 - Sanitizer::decCharReference
596206050.00% 4.121 118 - {closure}
597205150.00% 4.103 35 - Composer\Autoload\ClassLoader::loadClass@1
598204050.00% 4.081 68 - RemexHtml\TreeBuilder\InTableText::startTag
599197650.00% 3.953 179 - Sanitizer::validateAttributes
600195750.00% 3.915 1 - Maintenance::setAgentAndTriggers
601194250.00% 3.885 1 - Wikibase\Client\WikibaseClient::getEntityNamespaceLookup
602193750.00% 3.875 35 - Composer\Autoload\includeFile@1
603193600.00% 3.872 384 - MediaWiki\MediaWikiServices::getLanguageFactory
604190350.00% 3.807 111 - RemexHtml\TreeBuilder\InCell::startTag
605189950.00% 3.799 9 - Wikibase\Client\WikibaseClient::getDefaultInstance
606189450.00% 3.789 23 - Wikimedia\ObjectFactory::expandClosures
607188650.00% 3.773 1 - Wikibase\Client\WikibaseClient::newInstance
608187850.00% 3.757 1 - Maintenance::setLBFactoryTriggers
609187250.00% 3.745 2 - Wikibase\Client\WikibaseClient::getWikibaseServices
610187050.00% 3.741 1 - Wikibase\Client\WikibaseClient::newEntitySourceWikibaseServices
611186550.00% 3.731 179 - Sanitizer::safeEncodeTagAttributes
612186450.00% 3.729 2659 - RemexHtml\TreeBuilder\CachingStack::isInButtonScope
613185600.00% 3.712 10 - Wikimedia\ObjectFactory::Wikimedia\{closure}
614185250.00% 3.705 280 - Preprocessor::cacheSetTree
615184250.00% 3.685 768 - ParserOptions::getMaxPPNodeCount
616181450.00% 3.629 13 - MediaWiki\Logger\MonologSpi::getHandler@1
617180050.00% 3.601 892 - Wikimedia\Assert\Assert::parameterType
618179500.00% 3.590 39 - wfDebug
619178450.00% 3.569 2 - MediaWiki\MediaWikiServices::getRevisionStoreFactory
620178200.00% 3.564 4 - Wikimedia\Rdbms\LBFactoryMulti::newLoadBalancer
621178000.00% 3.560 13 - Wikimedia\Rdbms\LBFactoryMulti::getMainLB
622176000.00% 3.520 2 - MediaWiki\Session\SessionManager::getSessionFromInfo
623175400.00% 3.508 3 - Wikimedia\Rdbms\LoadMonitor::scaleLoads
624175100.00% 3.502 10 - Wikimedia\ObjectFactory::getObjectFromSpec@1
625173100.00% 3.462 96 - Parser::setFunctionHook
626170800.00% 3.416 2 - Wikimedia\Rdbms\LBFactoryMulti::newMainLB
627170250.00% 3.405 1 - Wikibase\Client\WikibaseClient::getEntityChangeFactory
628169950.00% 3.399 4 - WANObjectCache::getWithSetCallback@4
629169700.00% 3.394 109 - MediaWiki\Logger\Monolog\WikiProcessor::__invoke
630169050.00% 3.381 4 - WANObjectCache::fetchOrRegenerate@4
631168850.00% 3.377 97 - WANObjectCache::checkAndSetCooloff
632165600.00% 3.312 124 - TextContentHandler::unserializeContent
633165350.00% 3.307 229 - MapCacheLRU::hasField
634163500.00% 3.270 3 - MediaWiki\Session\SessionInfo::__construct
635163200.00% 3.264 3 - MediaWiki\Session\SessionProvider::newSessionInfo
636162500.00% 3.250 162 - MediaWiki\Storage\NameTableStore::getName
637162150.00% 3.243 1 - MediaWiki\Session\SessionManager::generateSessionId
638161600.00% 3.232 4 - Wikimedia\ObjectFactory::createObject
639159650.00% 3.193 3719 - RemexHtml\TreeBuilder\ActiveFormattingElements::getTail
640157250.00% 3.145 123 - Wikimedia\Timestamp\ConvertibleTimestamp::__construct
641156550.00% 3.131 87 - MediumSpecificBagOStuff::set
642156250.00% 3.125 5 - CachedBagOStuff::get
643153850.00% 3.077 223 - Sanitizer::armorFrenchSpaces
644152450.00% 3.049 768 - ParserOptions::getMaxPPExpandDepth
645151500.00% 3.030 28 - Parser::setHook
646151216.98% 3.024 6 - section.query-m: SET group_concat_max_len = N, `innodb_lock_wait_timeout` = N
647151050.00% 3.021 63 - TextContent::getWikitextForTransclusion
648150800.00% 3.016 1 - MediaWiki\Session\SessionManager::getSessionInfoForRequest
649149300.00% 2.986 1 - RESTBagOStuff::doGet
650148400.00% 2.968 81 - Title::exists
651147750.00% 2.955 3 - MediaWiki\Session\SessionManager::getProviders
652146050.00% 2.921 2164 - RemexHtml\TreeBuilder\Element::__construct
653145550.00% 2.911 215 - Sanitizer::safeEncodeAttribute
654144100.00% 2.882 8 - ContentHandler::getPageLanguage
655143800.00% 2.876 159 - WANObjectCache::makeGlobalKey
656141500.00% 2.830 9 - Wikimedia\Services\ServiceContainer::{closure}
657140300.00% 2.806 826 - GlobalVarConfig::has
658138100.00% 2.762 123 - Wikimedia\Timestamp\ConvertibleTimestamp::setTimestamp
659137850.00% 2.757 81 - CommentStore::getCommentLegacy
660137550.00% 2.751 2931 - ParserOptions::lazyLoadOption
661136550.00% 2.731 63 - TextContent::convert
662135650.00% 2.713 620 - ParserOptions::getMaxIncludeSize
663135250.00% 2.705 1 - DatabaseMessageIndex::store
664135150.00% 2.703 426 - Parser::incrementIncludeSize
665135000.00% 2.700 8 - Parser::handleDoubleUnderscore
666134850.00% 2.697 3 - Wikimedia\Rdbms\LoadBalancer::getRandomNonLagged
667130300.00% 2.606 89 - MediaWiki\Storage\SqlBlobStore::getCacheKey
668130100.00% 2.602 1 - MediaWiki\Extensions\OAuth\Frontend\UIHooks::onBeforeCreateEchoEvent
669128350.00% 2.567 81 - CommentStore::getCommentInternal
670124000.00% 2.480 144 - WikiMap::getCurrentWikiId
671123950.00% 2.479 129 - MagicWordArray::matchStartToEnd
672122300.00% 2.446 5 - ObjectCache::newFromParams
673122250.00% 2.445 550 - StripState::unstripBoth
674122000.00% 2.440 101 - RemexHtml\TreeBuilder\TreeBuilder::popAllUpToElement
675122000.00% 2.440 41 - wfTimestamp
676121900.00% 2.438 267 - RemexHtml\Tokenizer\LazyAttributes::getValues
677121300.00% 2.426 1974 - RemexHtml\TreeBuilder\TreeBuilder::generateImpliedEndTags
678121300.00% 2.426 14 - Wikimedia\Rdbms\LoadBalancer::getServerAttributes
679121000.00% 2.420 2164 - RemexHtml\Serializer\SerializerNode::__construct
680119700.00% 2.394 2 - NamespaceInfo::getCanonicalNamespaces
681118851.66% 2.377 1 - section.query-m: SELECT slot_revision_id,slot_content_id,slot_origin,slot_role_id,content_size,content_sha1,content_address,content_model FROM `slots` JOIN `content` ON ((slot_content_id = content_id)) WHERE slot_revision_id IN (N,...,N)
682118800.00% 2.376 1 - SkinFactory::makeSkin
683118050.00% 2.361 3 - Wikimedia\Rdbms\LoadBalancer::getLagTimes
684118000.00% 2.360 602 - MagicWordFactory::get
685117750.00% 2.355 14 - Wikimedia\Rdbms\Database::attributesFromType
686115550.00% 2.311 720 - MapCacheLRU::getAge
687115550.00% 2.311 3 - Wikimedia\Rdbms\LoadMonitor::getLagTimes
688115400.00% 2.308 251 - RemexHtml\Tokenizer\Tokenizer::consumeAttribs
689114900.00% 2.298 79 - LinkCache::getGoodLinkFieldObj
690114850.00% 2.297 68 - Wikimedia\ScopedCallback::__destruct
691112050.00% 2.241 2 - Wikibase\Client\WikibaseClient::{closure}
692111550.00% 2.231 1 - Wikibase\DataModel\DeserializerFactory::newItemDeserializer
693111350.00% 2.227 1 - Wikibase\Client\WikibaseClient::getEntityDiffer
694107150.00% 2.143 97 - MemcachedPeclBagOStuff::setNewPreparedValues
695106450.00% 2.129 2154 - MediaWiki\Tidy\RemexCompatMunger::trace
696106250.00% 2.125 65 - RemexHtml\TreeBuilder\TreeBuilder::anyOtherEndTag
697106050.00% 2.121 1987 - RemexHtml\Tokenizer\PlainAttributes::getValues
698105400.00% 2.108 120 - ExtensionProcessor::extractHooks
699104100.00% 2.082 2 - MemcachedPeclBagOStuff::doSet
700103000.00% 2.060 1 - ExtensionRegistry::buildVersionChecker
701103000.00% 2.060 1 - wfLogProfilingData
702102900.00% 2.058 145 - MapCacheLRU::getField
703102400.00% 2.048 86 - Parser::getExternalLinkRel
704101350.00% 2.027 162 - MediaWiki\Storage\NameTableStore::getTableFromCachesOrReplica
705100950.00% 2.019 81 - CommentStoreComment::__construct
706100750.00% 2.015 81 - MediaWiki\Revision\SlotRecord::__construct
707100500.00% 2.010 1 - Wikibase\Client\WikibaseClient::getDataValueDeserializer
70899700.00% 1.994 55 - Wikimedia\ScopedCallback::consume
70999500.00% 1.990 1 - MediaWiki\MediaWikiServices::getLocalisationCache
71099300.00% 1.986 1164 - Wikimedia\Assert\Assert::hasType
71198100.00% 1.962 224 - RemexHtml\Tokenizer\LazyAttributes::init
71297600.00% 1.952 94 - ExtensionProcessor::extractConfig2
71397000.00% 1.940 4 - MediaWiki\Session\SessionBackend::save
71496550.00% 1.931 2 - MediaWiki\Session\SessionBackend::MediaWiki\Session\{closure}
71596450.00% 1.929 1948 - RemexHtml\Tokenizer\PlainAttributes::__construct
71694550.00% 1.891 51 - RemexHtml\TreeBuilder\InRow::startTag
71793000.00% 1.860 1 - DatabaseMessageIndex::lock
71892250.00% 1.845 1938 - BlockLevelPass::hasOpenParagraph
71991850.00% 1.837 97 - MediumSpecificBagOStuff::guessSerialValueSize
72090900.00% 1.818 13 - Cdb\Reader\DBA::get
72190350.00% 1.807 515 - Sanitizer::decodeCharReferences
72289750.00% 1.795 1518 - Preprocessor_Hash::addLiteral
72389200.00% 1.784 399 - MagicWord::matchStartAndRemove
72488500.00% 1.770 63 - MediaWiki\Revision\RevisionStore::getRevisionRowCacheKey
72587850.00% 1.757 91 - MediaWiki\MediaWikiServices::getMessageCache
72686450.00% 1.729 402 - Language::getNamespaceIds
72786450.00% 1.729 81 - MediaWiki\Revision\RevisionSlots::setSlotsInternal
72886150.00% 1.723 1 - DataValues\Deserializers\DataValueDeserializer::__construct
72985950.00% 1.719 1 - DataValues\Deserializers\DataValueDeserializer::assertAreDataValueClasses
73085500.00% 1.710 49 - PPFrame_Hash::loopCheck
73185350.00% 1.707 1 - AggregateMessageGroupLoader::initGroupsFromConf
73285150.00% 1.703 83 - MessageCache::isLanguageLoaded
73385100.00% 1.702 12 - AutoLoader::autoload@2
73484950.00% 1.699 11 - MediaWiki\Logger\Monolog\LineFormatter::format
73584800.00% 1.696 6 - DataValues\Deserializers\DataValueDeserializer::isDataValueClass
73684250.00% 1.685 1 - MobileFrontendHooks::onRequestContextCreateSkin
73783500.00% 1.670 43 - Parser::getExternalLinkAttribs
73882300.00% 1.646 1 - JobQueueGroup::get
73982100.00% 1.642 1 - JobQueueGroup::factoryJobQueue
74081350.00% 1.627 1 - MediaWiki\MediaWikiServices::getMainObjectStash
74181100.00% 1.622 11 - Monolog\Formatter\LineFormatter::format
74280500.00% 1.610 534 - Parser::getPreprocessor
74380200.00% 1.604 34 - Sanitizer::checkCss
74479750.00% 1.595 8 - Parser::handleInternalLinks
74579700.00% 1.594 8 - MathHooks::onParserAfterTidy
74678600.00% 1.572 8 - Parser::resetOutput
74778500.00% 1.570 1 - CoreParserFunctions::register
74877950.00% 1.559 8 - MediaWiki\Logger\MonologSpi::getFormatter
74977250.00% 1.545 86 - wfMatchesDomainList
75076850.00% 1.537 1 - VersionChecker::__construct
75176800.00% 1.536 92 - RemexHtml\TreeBuilder\InTableText::processPendingCharacters
75276700.00% 1.534 24 - RemexHtml\TreeBuilder\InTableText::endTag
75376650.00% 1.533 47 - Language::normalize
75475750.00% 1.515 111 - Wikimedia\Assert\Assert::parameterElementType
75575450.00% 1.509 16 - Banner::getTitle
75674900.00% 1.498 51 - Html::rawElement
75774450.00% 1.489 182 - MessageGroupBase::factory
75874100.00% 1.482 8 - RemexHtml\TreeBuilder\TreeBuilder::startDocument
75973850.00% 1.477 1 - FileBasedMessageGroupLoader::getGroups
76073250.00% 1.465 8 - Parser::handleInternalLinks2
76173150.00% 1.463 108 - RemexHtml\TreeBuilder\ActiveFormattingElements::push
76272650.00% 1.453 32 - StringUtils::explode
76370050.00% 1.401 132 - MediaWiki\Content\ContentHandlerFactory::getContentHandler
76470000.00% 1.400 145 - WikiMap::getWikiIdFromDbDomain
76569300.00% 1.386 131 - MagicWordArray::matchStartAndRemove
76669100.00% 1.382 81 - MediaWiki\Revision\RevisionRecord::__construct
76768950.00% 1.379 34 - Sanitizer::normalizeCss
76868950.00% 1.379 170 - DBAccessObjectUtils::getDBOptions
76968250.00% 1.365 1 - Wikibase\DataAccess\SingleEntitySourceServices::getEntityMetaDataAccessor
77066800.00% 1.336 1674 - PPNode_Hash_Array::getLength
77166650.00% 1.333 63 - AbstractContent::convert
77266100.00% 1.322 3 - Wikibase\DataModel\DeserializerFactory::newStatementListDeserializer
77365650.00% 1.313 1627 - Sanitizer::validateCodepoint
77465550.00% 1.311 224 - RemexHtml\Tokenizer\Tokenizer::RemexHtml\Tokenizer\{closure}
77565500.00% 1.310 1 - CirrusSearch\Hooks::onMediaWikiServices
77665450.00% 1.309 909 - RemexHtml\TreeBuilder\CachingStack::isInScope
77765450.00% 1.309 1 - Wikibase\InternalSerialization\DeserializerFactory::newEntityDeserializer
77865300.00% 1.306 43 - Sanitizer::cleanUrl
77964750.00% 1.295 1 - VersionChecker::checkArray
78064700.00% 1.294 8 - ParserOptions::__construct
78164200.00% 1.284 43 - ParserOutput::addExternalLink
78263550.00% 1.271 8 - ParserOptions::initialiseFromUser
78363450.00% 1.269 135 - MediaWiki\Languages\LanguageConverterFactory::getLanguageConverter
78463350.00% 1.267 826 - GlobalVarConfig::hasWithPrefix
78563100.00% 1.262 157 - Wikimedia\IPUtils::sanitizeIP
78662450.00% 1.249 1236 - Sanitizer::normalizeEntity
78762400.00% 1.248 8 - RemexHtml\TreeBuilder\TreeBuilder::__construct
78862300.00% 1.246 120 - ExtensionRegistry::exportAutoloadClassesAndNamespaces
78962000.00% 1.240 1 - ExtensionRegistry::getCache
79061750.00% 1.235 49 - SectionProfiler::scopedProfileOut
79161650.00% 1.233 6 - Wikimedia\Rdbms\LoadBalancer::getLazyConnectionRef
79261400.00% 1.228 2 - Wikibase\Lexeme\WikibaseLexemeHooks::{closure}
79360800.00% 1.216 3 - Wikibase\DataModel\DeserializerFactory::newStatementDeserializer
79460800.00% 1.216 1 - Wikibase\InternalSerialization\LegacyDeserializerFactory::newEntityDeserializer
79560600.00% 1.212 1 - ScoreHooks::onParserFirstCallInit
79660550.00% 1.211 82 - WikimediaMessagesHooks::onMessageCacheGet
79760000.00% 1.200 1 - Wikibase\DataModel\Services\Diff\EntityDiffer::__construct
79859950.00% 1.199 32 - PPDStack::push
79959700.00% 1.194 209 - RemexHtml\TreeBuilder\Element::getNoahKey
80059200.00% 1.184 81 - User::newFromAnyId
80159200.00% 1.184 8 - Parser::handleHeadings
80258700.00% 1.174 8 - MagicWordArray::matchAndRemove
80358050.00% 1.161 51 - Html::openElement
80458050.00% 1.161 67 - MapCacheLRU::setField
80557650.00% 1.153 8 - ExternalStoreFactory::getStoreForUrl
80657400.00% 1.148 1 - MediaWiki\Extensions\ParserFunctions\Hooks::onParserFirstCallInit
80757400.00% 1.148 3 - MediaWiki\Session\SessionManager::singleton
80857200.00% 1.144 1 - OutputPage::__construct
80957050.00% 1.141 1 - MediaWiki\Session\SessionManager::__construct
81056450.00% 1.129 90 - wfParseUrl
81156250.00% 1.125 1 - MediaWiki\MediaWikiServices::getSlotRoleRegistry
81255100.00% 1.102 4 - Hooks::run@1
81355000.00% 1.100 2 - MemcachedPeclBagOStuff::__construct
81454750.00% 1.095 1124 - StripState::unstripType
81554400.00% 1.088 8 - ExternalStoreFactory::getStore
81654000.00% 1.080 71 - MediaWiki\Revision\RevisionStore::newRevisionSlots
81753850.00% 1.077 334 - MediaWiki\Revision\SlotRecord::getStringField
81853250.00% 1.065 280 - PPDStack_Hash::__construct
81953200.00% 1.064 4 - MediaWiki\HookContainer\HookContainer::run@1
82052750.00% 1.055 1 - MediaWiki\Extension\EventBus\EventBus::getInstanceForStream
82152100.00% 1.042 1 - Wikimedia\Rdbms\DBConnRef::lock
82252000.00% 1.040 16 - VersionChecker::handleExtensionDependency
82351700.00% 1.034 1 - MediaWiki\Extension\EventBus\EventBus::getInstance
82451600.00% 1.032 1 - User::isValidUserName
82551350.00% 1.027 1 - Wikimedia\Rdbms\DatabaseMysqlBase::lock
82651300.00% 1.026 280 - PPFrame_Hash::virtualBracketedImplode
82751000.00% 1.020 123 - Wikimedia\Timestamp\ConvertibleTimestamp::getTimestamp
82850650.00% 1.013 16 - TranslatablePage::isTranslationPage
82950600.00% 1.012 147 - Title::equals
83050400.00% 1.008 900 - ExtensionProcessor::addConfigGlobal
83150300.00% 1.006 1 - Wikibase\InternalSerialization\LegacyDeserializerFactory::newItemDeserialier

One curious note from the profile is:

3591.525      1 - DatabaseMessageIndex::retrieve
177.966      1 - section.query-m: SELECT * FROM `translate_messageindex` 
140.034 131620 - MessageIndex::unserialize

Where does the rest of 3273.525 go? The whole method is:

	public function retrieve( $forRebuild = false ) {
		if ( $this->index !== null && !$forRebuild ) {
			return $this->index;
		}

		$dbr = wfGetDB( $forRebuild ? DB_MASTER : DB_REPLICA );
		$res = $dbr->select( 'translate_messageindex', '*', [], __METHOD__ );
		$this->index = [];
		foreach ( $res as $row ) {
			$this->index[$row->tmi_key] = $this->unserialize( $row->tmi_value );
		}

		return $this->index;
	}

Is this just a profiling artefact? Maybe the time for MessageIndex::unserialize() is not accounted properly?.

Also, there are 5790 WikiPageMessageGroups, but 10659 calls to WikiPageMessageGroup::getDefinitions.

> $a = MessageGroups::getGroupsByType( 'WikiPageMessageGroup' );

> echo count( $a );
5790

WikiPageMessageGroup has caching though, so this is not an issue. What is a (small) issue is that it calls Title::getArticleId(), which does a separate query. This can be avoided with a join on the page table.

For comparison in the future, the message index rebuild script takes 26s for MetaWiki currently:

nikerabbit@mwdebug1001:~$ time mwscript extensions/Translate/scripts/createMessageIndex.php --wiki=metawiki

real    0m25.953s
user    0m6.292s
sys     0m1.624s
nikerabbit@mwdebug1001:~$ time mwscript extensions/Translate/scripts/createMessageIndex.php --wiki=metawiki

real    0m26.040s
user    0m5.896s
sys     0m1.716s

Change 598461 had a related patch set uploaded (by Nikerabbit; owner: Nikerabbit):
[mediawiki/extensions/Translate@master] Avoid extra query in WikiPageMessageGroup::getDefinitions

https://gerrit.wikimedia.org/r/598461

Change 598470 had a related patch set uploaded (by Nikerabbit; owner: Nikerabbit):
[mediawiki/extensions/CentralNotice@master] Speed up BannerMessageGroup's getKeys and getDefinitions.

https://gerrit.wikimedia.org/r/598470

Apart from the two patches above, I cannot see other low hanging fruit, other than adding message key loaders that avoid doing one query per message group by aggregating those queries into bigger ones.

Change 598461 merged by jenkins-bot:
[mediawiki/extensions/Translate@master] Avoid extra query in WikiPageMessageGroup::getDefinitions

https://gerrit.wikimedia.org/r/598461

Change 599028 had a related patch set uploaded (by Nikerabbit; owner: Nikerabbit):
[mediawiki/extensions/Translate@master] MessageHandle: improve handling of outdated index

https://gerrit.wikimedia.org/r/599028

Nikerabbit updated the task description. (Show Details)Wed, May 27, 2:09 PM

Change 599028 merged by jenkins-bot:
[mediawiki/extensions/Translate@master] MessageHandle: improve handling of outdated index

https://gerrit.wikimedia.org/r/599028

Nikerabbit updated the task description. (Show Details)Mon, Jun 1, 8:45 AM
Nikerabbit updated the task description. (Show Details)Mon, Jun 1, 8:48 AM

QA plan

Affected projects: All Wikipedias

Are you sure? As far as I know, Translate is not installed on any Wikipedia except for Test Wikipedia. Did you mean all wikis using Translate?

Nikerabbit updated the task description. (Show Details)Mon, Jun 1, 10:45 AM

That's was an issue of copy-pasting from other task (instead of an empty template, which doesn't exist yet)

T254430: Rdbms overhead due to "SELECT @@GLOBAL.read_only" queries effectively undid my performance optimization (effect about 4 second on metawiki) by making things about 5s slower on metawiki.

Nikerabbit updated the task description. (Show Details)Thu, Jun 4, 8:11 AM