MediaWiki REL1_28
LoadMonitor Class Reference

Basic DB load monitor with no external dependencies Uses memcached to cache the replication lag for a short time. More...

Inheritance diagram for LoadMonitor:
Collaboration diagram for LoadMonitor:

Public Member Functions

 __construct (ILoadBalancer $lb, BagOStuff $srvCache, BagOStuff $cache, array $options=[])
 Construct a new LoadMonitor with a given LoadBalancer parent.
 
 getLagTimes (array $serverIndexes, $domain)
 Get an estimate of replication lag (in seconds) for each server.
 
 scaleLoads (array &$weightByServer, $domain)
 Perform load ratio adjustment before deciding which server to use.
 
 setLogger (LoggerInterface $logger)
 

Public Attributes

const VERSION = 1
 

Protected Member Functions

 getServerStates (array $serverIndexes, $domain)
 
 getWeightScale ( $index, IDatabase $conn=null)
 

Protected Attributes

BagOStuff $mainCache
 
ILoadBalancer $parent
 
LoggerInterface $replLogger
 
BagOStuff $srvCache
 

Private Member Functions

 getCacheKey (array $serverIndexes)
 

Private Attributes

float $movingAveRatio
 Moving average ratio (e.g.
 

Detailed Description

Basic DB load monitor with no external dependencies Uses memcached to cache the replication lag for a short time.

Definition at line 31 of file LoadMonitor.php.

Constructor & Destructor Documentation

◆ __construct()

LoadMonitor::__construct ( ILoadBalancer  $lb,
BagOStuff  $sCache,
BagOStuff  $cCache,
array  $options = [] 
)

Construct a new LoadMonitor with a given LoadBalancer parent.

Parameters
ILoadBalancer$lbLoadBalancer this instance serves
BagOStuff$sCacheLocal server memory cache
BagOStuff$cCacheLocal cluster memory cache
array$optionsOptions map

Implements ILoadMonitor.

Reimplemented in LoadMonitorMySQL.

Definition at line 46 of file LoadMonitor.php.

References $cache, $options, and $srvCache.

Member Function Documentation

◆ getCacheKey()

LoadMonitor::getCacheKey ( array  $serverIndexes)
private

Definition at line 205 of file LoadMonitor.php.

Referenced by getServerStates().

◆ getLagTimes()

LoadMonitor::getLagTimes ( array  $serverIndexes,
  $domain 
)

Get an estimate of replication lag (in seconds) for each server.

Values may be "false" if replication is too broken to estimate

Parameters
integer[]$serverIndexes
string$domain
Returns
array Map of (server index => float|int|bool)

Implements ILoadMonitor.

Definition at line 77 of file LoadMonitor.php.

References getServerStates().

◆ getServerStates()

LoadMonitor::getServerStates ( array  $serverIndexes,
  $domain 
)
protected

Definition at line 83 of file LoadMonitor.php.

References $cache, $mainCache, $movingAveRatio, $value, as, getCacheKey(), getWeightScale(), and use.

Referenced by getLagTimes(), and scaleLoads().

◆ getWeightScale()

LoadMonitor::getWeightScale (   $index,
IDatabase  $conn = null 
)
protected
Parameters
integer$indexServer index
IDatabase | null$connConnection handle or null on connection failure
Returns
float

Reimplemented in LoadMonitorMySQL.

Definition at line 201 of file LoadMonitor.php.

Referenced by getServerStates().

◆ scaleLoads()

LoadMonitor::scaleLoads ( array $weightByServer,
  $domain 
)

Perform load ratio adjustment before deciding which server to use.

Parameters
int[]&$weightByServerMap of (server index => float weight)
string | bool$domain

Implements ILoadMonitor.

Definition at line 63 of file LoadMonitor.php.

References as, and getServerStates().

◆ setLogger()

LoadMonitor::setLogger ( LoggerInterface  $logger)

Definition at line 59 of file LoadMonitor.php.

Member Data Documentation

◆ $mainCache

BagOStuff LoadMonitor::$mainCache
protected

Definition at line 37 of file LoadMonitor.php.

Referenced by getServerStates().

◆ $movingAveRatio

float LoadMonitor::$movingAveRatio
private

Moving average ratio (e.g.

0.1 for 10% weight to new weight)

Definition at line 42 of file LoadMonitor.php.

Referenced by getServerStates().

◆ $parent

ILoadBalancer LoadMonitor::$parent
protected

Definition at line 33 of file LoadMonitor.php.

◆ $replLogger

LoggerInterface LoadMonitor::$replLogger
protected

Definition at line 39 of file LoadMonitor.php.

◆ $srvCache

BagOStuff LoadMonitor::$srvCache
protected

Definition at line 35 of file LoadMonitor.php.

Referenced by __construct(), and LoadMonitorMySQL\__construct().

◆ VERSION

const LoadMonitor::VERSION = 1

Definition at line 44 of file LoadMonitor.php.


The documentation for this class was generated from the following file: