From: Aaron Schulz Date: Sat, 20 Dec 2014 11:58:35 +0000 (-0800) Subject: Log to DBPerformance log when many LB connections are acquired X-Git-Tag: 1.31.0-rc.0~12749^2 X-Git-Url: http://git.cyclocoop.org/%28%5B%5E/404?a=commitdiff_plain;h=e0c286646ec5bcd5599d487cc7725ba4053d2939;p=lhc%2Fweb%2Fwiklou.git Log to DBPerformance log when many LB connections are acquired Change-Id: Idcb7233bc418a793b87f4d445807be5eced12d95 --- diff --git a/includes/db/LoadBalancer.php b/includes/db/LoadBalancer.php index f789d56ac1..f11ef0cd36 100644 --- a/includes/db/LoadBalancer.php +++ b/includes/db/LoadBalancer.php @@ -58,9 +58,14 @@ class LoadBalancer { private $mLaggedSlaveMode; /** @var string The last DB selection or connection error */ private $mLastError = 'Unknown error'; + /** @var integer Total connections opened */ + private $connsOpened = 0; /** @var ProcessCacheLRU */ private $mProcCache; + /** @var integer Warn when this many connection are held */ + const CONN_HELD_WARN_THRESHOLD = 10; + /** * @param array $params Array with keys: * servers Required. Array of server info structures. @@ -735,6 +740,14 @@ class LoadBalancer { $server['dbname'] = $dbNameOverride; } + // Log when many connection are made on requests + if ( ++$this->connsOpened >= self::CONN_HELD_WARN_THRESHOLD ) { + $masterAddr = $this->getServerName( 0 ); + wfDebugLog( 'DBPerformance', __METHOD__ . ": " . + "{$this->connsOpened}+ connections made (master=$masterAddr)\n" . + wfBacktrace( true ) ); + } + # Create object try { $db = DatabaseBase::factory( $server['type'], $server ); @@ -906,6 +919,7 @@ class LoadBalancer { 'foreignFree' => array(), 'foreignUsed' => array(), ); + $this->connsOpened = 0; } /** @@ -922,6 +936,7 @@ class LoadBalancer { if ( $conn === $candidateConn ) { $conn->close(); unset( $this->mConns[$i1][$i2][$i3] ); + --$this->connsOpened; $done = true; break; }