Используя пакет Go cron, я запускаю следующий код каждую секунду:
func dbPGConnectionCount(db *sql.DB) (int64, error) {
var connectionCount int64
rows, err := db.Query(`SELECT count(1) from pg_stat_activity;`)
if err != nil {
return 0, err
}
defer rows.Close()
for rows.Next() {
err = rows.Scan(&connectionCount)
if err != nil {
return 0, err
}
}
return connectionCount, err
}
, где db
- пул соединений для соединений с PostgreSQL.
Благодаря defer
Заявление Я ожидал, что PostgreSQL не будет держать открытыми какие-либо соединения. Однако вскоре после запуска моей программы, когда я проверяю с помощью select * from pg_stat_activity
, я вижу новые пустые запросы, добавляемые каждую секунду.
Что я делаю не так?