Как найти утечки соединения в облаке PostgreSQL sql - PullRequest
0 голосов
/ 28 октября 2019

Я использую Postgres, предоставляемый Google Cloud SQL. В последнее время мы видим, что количество подключений значительно увеличилось.

Пришлось увеличить лимит с 200 до 500, затем до 1000. В Google Cloudконсоль Postgres сообщает о 800-токовых соединениях.

Однако я понятия не имею, откуда эти соединения. У нас есть одна служба движка приложений, к которой на данный момент не обращаются много трафика, другое приложение, размещенное на kubernetes. И дюжина или около того пакетных заданий, которые подключаются к нему. Очевидно, что где-то должна быть утечка соединения.

Есть ли какой-нибудь способ узнать откуда происходят эти соединения?

Все приложения, подключенные к нему, на данный момент основаны на Java. Они используют пул соединений HikariCP. Я подумываю изменить «тестовый запрос» при подключении, чтобы вставить запись в таблицу журнала. Следовательно, я мог бы, возможно, выяснить, откуда происходят эти связи.

Но есть ли лучшие способы?

Спасибо,

1 Ответ

1 голос
/ 28 октября 2019

Рассмотрим мониторинг активности соединения с помощью pg_stat_activity , то есть: SELECT * from pg_stat_activity;.

Согласно документации :

Соединения, которые показывают IP-адрес, например 1.2.3.4, соединяются с использованием IP. Соединения с cloudqlproxy ~ 1.2.3.4 используют Cloud SQL Proxy, либо они созданы в App Engine. Соединения с localhost обычно связаны с экземпляром первого поколения из App Engine, хотя этот путь также используется некоторыми внутренними процессами Cloud SQL.

Кроме того, ознакомьтесь с рекомендациями по управлениюсоединения с базой данных , которые содержат информацию об открытии и закрытии соединений, количестве соединений или о том, как установить продолжительность соединения на языке программирования Java.

...