From: jenkins-bot Date: Thu, 8 Jan 2015 19:49:53 +0000 (+0000) Subject: Merge "Log to DBPerformance log when many LB connections are acquired" X-Git-Tag: 1.31.0-rc.0~12749 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22auteur_infos%22%2C%22id_auteur=%24connect_id_auteur%22%29%20.%20%22?a=commitdiff_plain;h=972eadb6565e072f01c0b3f73b843d32e1b0a91f;hp=534a0f99ba2ff4c1e1585a415bbc3a9960ed067b;p=lhc%2Fweb%2Fwiklou.git Merge "Log to DBPerformance log when many LB connections are acquired" --- diff --git a/includes/db/LoadBalancer.php b/includes/db/LoadBalancer.php index 8618ae6ab4..4c9fd3240c 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. @@ -734,6 +739,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 ); @@ -905,6 +918,7 @@ class LoadBalancer { 'foreignFree' => array(), 'foreignUsed' => array(), ); + $this->connsOpened = 0; } /** @@ -921,6 +935,7 @@ class LoadBalancer { if ( $conn === $candidateConn ) { $conn->close(); unset( $this->mConns[$i1][$i2][$i3] ); + --$this->connsOpened; $done = true; break; }