我用golang和postgresql创建了一个Api作为数据库 .
在几次请求之后,API崩溃并显示错误500和显示的日志
pq:抱歉,已有太多客户
起初是因为我选择时没有关闭行,所以我有rows.close()全部 .
但事实并非如此,因为我已经有了这个错误 .
然后看到数据库的启动只需要3ms,我想我应该在每次重置所有连接的请求时启动并关闭数据库,但是考虑一下,这是无稽之谈 .
所以我问你,这个错误是如何工作的,是客户端连接在一定时间后被重置或连接被切断,直到服务器重启客户端?
如果在一定时间后重置,增加最大客户端连接数有什么缺点?
我的代码:
我在程序开始时这样打开我的数据库:
var gest Gestion
type Gestion struct {
Db *sql.DB
DbLog *sql.DB
}
func InitDbUser() *sql.DB {
dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable", DB_USER, DB_PASSWORD, DB_NAME)
db, err := sql.Open("postgres", dbinfo)
LogFatalError(err)
err2 := db.Ping()
LogFatalError(err2)
return db
}
func main() {
gest.Db = InitDbUser()
defer gest.Db.Close()
//routing is here
}
当我在我的psql中使用此请求时:
select min_val,max_val from pg_settings where name='max_connections';
我戴帽子:
min_val | max_val
---------+---------
1 | 8388607
对不起,我的英文,我希望你明白我的要求:)
1 回答
您可以检查PG的max_connection设置,这可能是这里的问题: