我有一个J2EE应用程序,部署在 Windows(Vista 32位)平台的JBoss6应用程序服务器中。我的数据库是“ PostgreSQL 9.0.4 ”,我正在使用JDBC驱动程序:“postgresql-9.0-801.jdbc4.jar”。
在我的ds.xml文件中,我定义了 max-pool-size = 75 和min-pool-size = 40。 我正在使用JPA / Hibernate以及使用javax.sql.DataSource。
在Windows“任务管理器”中,我发现当PostgreSQL服务器启动时,它会创建 6“postgres.exe”进程。 现在,当我在JBoss中部署/启动J2EE应用程序时,我发现总共66个“postgres.exe”进程。 因此,这意味着由于我的应用程序启动而产生(或启动)了另外 60个postgres进程。
如果我将 max-pool-size 更改为 40 ,那么我注意到我总共有 46个postgres.exe进程 。 在这两种情况下,没有。当我停止我的J2EE应用程序时,postgres进程的结果降到了6。
所以我的问题,这是正常的吗? 由于'连接池'(由Hibernate使用)产生/启动了那些额外的进程吗?
答案 0 :(得分:23)
是的,这很正常。来自manual:
PostgreSQL服务器可以处理来自的多个并发连接 客户端。为了达到这个目的,它开始(“分叉”)每个的新过程 连接即可。从那时起,客户端和新服务器进程 在没有原始postgres过程干预的情况下进行沟通。 因此,主服务器进程始终在运行,等待客户端 连接,而客户端和相关的服务器进程来了 去。