After a period of inactivity, my go web service is getting a net.OpError
with message read tcp x.x.x.x:52086->x.x.x.x:24414: read: connection reset by peer
when executing the first postgres sql query. After the error, the subsequent requests will work fine.
The postgres database is hosted with compose.com which has haproxy in front of the postgres db. My go web app is using standard sql and sqlx.
I've tried running a ticker invoking db.Ping()
every 15 minutes, but this hasn't fixed the issue.
Why is the go standard sql
lib not handling these connection drops?
sql.Open
stuff which is meant to handle connecting pooling, so I can't just simply reconnect. Also as I mentioned, after the error, the subsequent queries go through fine. I'll update the question for clarity. – Demedb.SetConnMaxLifetime(time.Minute * 15)
which I think should flush out the dead connections. – Deme