From 297c1d297f4cee55a6aee5eb68583d0139aef076 Mon Sep 17 00:00:00 2001 From: Andrei Korzhevskii Date: Mon, 23 Mar 2015 18:23:53 +0300 Subject: database/sql: provide stats on number of open connections to the database. This change provides a convenient way to monitor database connection pool. Change-Id: I4b3757855b43f3b254acf9312e2a16e2f87840d0 Reviewed-on: https://go-review.googlesource.com/7950 Run-TryBot: Brad Fitzpatrick Reviewed-by: Brad Fitzpatrick --- src/database/sql/sql.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/database/sql/sql.go') diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index 1ce679d8a6..b0e8894673 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -572,6 +572,22 @@ func (db *DB) SetMaxOpenConns(n int) { } } +// DBStats contains database statistics. +type DBStats struct { + // OpenConnections is the number of open connections to the database. + OpenConnections int +} + +// Stats returns database statistics. +func (db *DB) Stats() DBStats { + db.mu.Lock() + stats := DBStats{ + OpenConnections: db.numOpen, + } + db.mu.Unlock() + return stats +} + // Assumes db.mu is locked. // If there are connRequests and the connection limit hasn't been reached, // then tell the connectionOpener to open new connections. -- cgit v1.3