From e0c286646ec5bcd5599d487cc7725ba4053d2939 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Sat, 20 Dec 2014 03:58:35 -0800 Subject: [PATCH] Log to DBPerformance log when many LB connections are acquired Change-Id: Idcb7233bc418a793b87f4d445807be5eced12d95 --- includes/db/LoadBalancer.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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; } -- 2.20.1