【问题标题】:Why so many "postgres.exe" are created when I run my application?为什么在我运行我的应用程序时会创建这么多“postgres.exe”?
【发布时间】:2011-07-27 18:44:08
【问题描述】:

我有一个J2EE 应用程序,部署在Windows(Vista 32 位) 平台的JBoss6 应用服务器上。我的数据库是“PostgreSQL 9.0.4”,我正在使用 JDBC 驱动程序:“postgresql-9.0-801.jdbc4.jar”。

在我的 ds.xml 文件中,我定义了 ma​​x-pool-size = 75 和 min-pool-size = 40。 我正在使用 JPA/Hibernate 以及 javax.sql.DataSource。

在 Windows“任务管理器”中,我发现 PostgreSQL 服务器启动时会创建 6 个“postgres.exe”进程。 现在,当我在 JBoss 中部署/启动我的 J2EE 应用程序时,我发现总共有 66 个“postgres.exe”进程。 这意味着由于我的应用程序已启动,另外 60 个 postgres 进程被生成(或启动)。

如果我将 ma​​x-pool-size 更改为 40,我注意到我总共有 46 个 postgres.exe 进程 . 在这两种情况下都没有。当我停止 J2EE 应用程序时,postgres 进程数减少到 6 个。

所以我的问题是,这正常吗? 是否因为“连接池”(由 Hibernate 使用)而产生/启动了这些额外的进程?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    是的,这很正常。来自manual

    PostgreSQL 服务器可以处理来自 客户。为了实现这一点,它开始(“分叉”)为每个 连接。从那时起,客户端和新的服务器进程 在没有原始 postgres 进程干预的情况下进行通信。 因此,主服务器进程一直在运行,等待客户端 连接,而客户端和相关的服务器进程来了 去吧。

    【讨论】:

    • 嗨@Frank 我面临同样的问题,由于我的由spring-boot应用程序执行的数据库交互变得缓慢。有什么方法可以关闭不必要的连接?我该如何优化这个?
    • 好像没有关闭进程。
    • 有没有人发现如何关闭“未使用”的进程?它只会增加,永远不会关闭
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2019-06-16
    • 2014-05-24
    • 2019-04-27
    • 1970-01-01
    相关资源
    最近更新 更多