После периода бездействия мой веб-сервис go получает net.OpError
с сообщением read tcp x.x.x.x:52086->x.x.x.x:24414: read: connection reset by peer
при выполнении первого SQL-запроса postgres. После ошибки последующие запросы будут работать нормально.
База данных postgres размещена на compose.com, у которого есть haproxy перед базой данных postgres. В моем веб-приложении go используются стандартные sql и sqlx.
Я пробовал запускать тикер, вызывающий db.Ping()
каждые 15 минут, но это не решило проблему.
Почему стандартная библиотека sql
не обрабатывает эти разрывы соединения?
sql.Open
, который предназначен для обработки пула подключений, поэтому я не могу просто переподключиться. Также, как я уже упоминал, после ошибки последующие запросы проходят нормально. Я обновлю вопрос для ясности. - person Nick   schedule 14.05.2018db.SetConnMaxLifetime(time.Minute * 15)
, которая, я думаю, должна сбросить мертвые соединения. - person Nick   schedule 15.05.2018