Postgresql 对等连接重置/Postgres连接过多导致管道断开
使用带有两个并发连接的Postgresql 对等连接重置/Postgres连接过多导致管道断开,postgresql,go,networking,connection-pooling,psql,Postgresql,Go,Networking,Connection Pooling,Psql,使用带有两个并发连接的sqlx,我很快就遇到了打开的连接太多的问题。限制db.db.MaxOpenConnections实际上解决了这个问题,并激活了我希望的连接池 现在,在一些机器上,我们在测试中观察到,该测试准确地测试了太多打开的连接不会发生不同的错误: read tcp [::1]:54883->[::1]:5432: read: connection reset by peer read tcp [::1]:54886->[::1]:5432: read: connectio
sqlx
,我很快就遇到了打开的连接太多的问题。限制db.db.MaxOpenConnections
实际上解决了这个问题,并激活了我希望的连接池
现在,在一些机器上,我们在测试中观察到,该测试准确地测试了太多打开的连接不会发生不同的错误:
read tcp [::1]:54883->[::1]:5432: read: connection reset by peer
read tcp [::1]:54886->[::1]:5432: read: connection reset by peer
read tcp [::1]:54884->[::1]:5432: read: connection reset by peer
read tcp [::1]:54887->[::1]:5432: read: connection reset by peer
read tcp [::1]:54885->[::1]:5432: read: connection reset by peer
read tcp [::1]:54888->[::1]:5432: read: connection reset by peer
…
Postgres日志没有透露任何信息。这可能发生在网络堆栈上吗?我还可以做些什么来调试它?我无法在本地复制它。是否使用全局数据库句柄?或者每个请求打开一个?您是否应该关闭*sql.Rows
?在循环执行*sql.Rows
时是否执行新查询?@mkopriva sqlx会处理这些问题。这是一个db句柄你的postgres可以接受的最大连接数是多少?也许这是一个真实的案例。@LuisMuñoz 50。如果问题出现在Postgres的末尾,我是否会在日志中看到错误消息?db上的Doc()发出警告:请确保调用rows.Close()将连接返回到池
。这可能是你的原因吗?