MediaWiki REL1_32
LoadMonitorMySQL.php
Go to the documentation of this file.
1<?php
22namespace Wikimedia\Rdbms;
23
24use BagOStuff;
26
36
37 public function __construct(
39 ) {
40 parent::__construct( $lb, $srvCache, $wCache, $options );
41
42 $this->warmCacheRatio = $options['warmCacheRatio'] ?? 0.0;
43 }
44
45 protected function getWeightScale( $index, IDatabase $conn = null ) {
46 if ( !$conn ) {
47 return parent::getWeightScale( $index, $conn );
48 }
49
50 $weight = 1.0;
51 if ( $this->warmCacheRatio > 0 ) {
52 $res = $conn->query( 'SHOW STATUS', __METHOD__ );
53 $s = $res ? $conn->fetchObject( $res ) : false;
54 if ( $s === false ) {
55 $host = $this->parent->getServerName( $index );
56 $this->replLogger->error( __METHOD__ . ": could not get status for $host" );
57 } else {
58 // https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html
59 if ( $s->Innodb_buffer_pool_pages_total > 0 ) {
60 $ratio = $s->Innodb_buffer_pool_pages_data / $s->Innodb_buffer_pool_pages_total;
61 } else {
62 $ratio = 1.0;
63 }
64 // Stop caring once $ratio >= $this->warmCacheRatio
65 $weight *= min( $ratio / $this->warmCacheRatio, 1.0 );
66 }
67 }
68
69 return $weight;
70 }
71}
Class representing a cache/ephemeral data store.
Definition BagOStuff.php:58
Multi-datacenter aware caching interface.
Basic MySQL load monitor with no external dependencies Uses memcached to cache the replication lag fo...
__construct(ILoadBalancer $lb, BagOStuff $srvCache, WANObjectCache $wCache, array $options=[])
float $warmCacheRatio
What buffer pool use ratio counts as "warm" (e.g.
getWeightScale( $index, IDatabase $conn=null)
Basic DB load monitor with no external dependencies Uses memcached to cache the replication lag for a...
$res
Definition database.txt:21
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
Definition hooks.txt:2050
Basic database interface for live and lazy-loaded relation database handles.
Definition IDatabase.php:38
Database cluster connection, tracking, load balancing, and transaction manager interface.
The wiki should then use memcached to cache various data To use multiple just add more items to the array To increase the weight of a make its entry a array("192.168.0.1:11211", 2))