【问题标题】:How to find connection leaks on PostgreSQL cloud sql如何在 PostgreSQL 云 sql 上查找连接泄漏
【发布时间】:2019-10-28 08:56:39
【问题描述】:

我使用的是由 Google Cloud SQL 提供的 Postgres, 最近我们看到连接数大幅增加。

必须将限制从 200 提高到 500,然后提高到 1000。在 Google Cloud 控制台中,Postgres 报告了 800 个当前连接。

但是我不知道这些联系是从哪里来的。我们有一个应用程序引擎服务,目前访问它的流量并不多,另一个应用程序托管在 kubernetes 上。还有十几个与之相关的批处理作业。显然,某处一定有一些连接泄漏。

有什么方法可以让我看到这些连接的来源?

目前连接到它的所有应用程序都是基于 Java 的。 他们使用 HikariCP 连接池。我正在考虑在连接时更改“测试查询”以在日志表中插入一条记录。因此,我也许可以找出连接的来源。

但是有更好的方法吗?

谢谢,

【问题讨论】:

    标签: postgresql google-cloud-sql


    【解决方案1】:

    考虑使用pg_stat_activity 监控连接活动,即:SELECT * from pg_stat_activity;

    根据documentation

    显示 IP 地址的连接(例如 1.2.3.4)正在使用 IP 进行连接。与 cloudsqlproxy~1.2.3.4 的连接正在使用 Cloud SQL 代理,否则它们源自 App Engine。来自 localhost 的连接通常是来自 App Engine 的第一代实例,尽管某些内部 Cloud SQL 进程也使用该路径。

    另外,请查看best practices for managing database connections,其中包含有关打开和关闭连接、连接计数或如何在 Java 编程语言中设置连接持续时间的信息。

    【讨论】:

    • 当我运行这个查询时,我看到 95% 的连接在他们的查询字段中有这个:SHOW TRANSACTION ISOLATION LEVEL
    • 这是由 HikariCP 连接池引起的。可能在调用getTransactionIsolation() 方法时。我建议查看thisthis 帖子以获取更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多