Postgresql with golang,问题

时间:2016-03-31 11:31:28

标签: database postgresql go

我用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 个答案:

答案 0 :(得分:0)

您可以检查PG的max_connection设置,这可能是此处的问题:

select min_val,max_val from pg_settings where name='max_connections'