【发布时间】:2020-04-14 00:57:30
【问题描述】:
鉴于db 的类型为*sql.DB(使用lib/pq 驱动程序),以下代码会导致连接泄漏:
rows, err := db.Query(
"select 1 from things where id = $1",
thing,
)
if err != nil {
return nil, fmt.Errorf("can't select thing (%d): %w", thing, err)
}
found := false
for rows.Next() {
found = true
break
}
重复调用此代码会增加打开的连接数,直到耗尽:
select sum(numbackends) from pg_stat_database;
// 5
// 6
// 7
// ...
// 80
我该如何解决?
【问题讨论】:
标签: sql postgresql go