我有一个J2EE应用程序,部署在Windows (Vista 32位)平台中的JBoss6应用服务器中。我的数据库是"PostgreSQL 9.0.4“,我使用的是JDBC驱动程序:”PostgreSQL9.0-801.jdbc4.jar“。
在我的ds.xml文件中,我定义了最大池大小= 75和最小池大小= 40。我使用的是JPA/Hibernate以及javax.sql.DataSource。
在windows“任务管理器”中,我发现当PostgreSQL服务器启动时,它会创建6 "postgres.exe“进程。现在,当我在JBoss中部署/启动我的JBoss应用程序时,我发现总共有66个 "postgres.exe“进程。因此,这意味着另一个60 postgres进程是由于我的应用程序启动而产生(或启动)的。
如果我将max-pool-size更改为40,那么我注意到总共有46 postgres.exe processes。在这两种情况下都没有。当我停止我的J2EE应用程序时,postgres进程会下降到6个。
所以我的问题,这正常吗?这些额外的进程是因为“连接池”(由Hibernate使用)而产生/启动的吗?
发布于 2011-07-27 20:15:39
是的,这很正常。来自manual
PostgreSQL服务器可以处理来自客户端的多个并发连接。为了实现这一点,它启动(“叉”),为每个连接创建一个新进程。从那时起,客户机和新服务器进程在不受原始postgres进程干预的情况下进行通信。因此,主服务器进程总是在运行,等待客户端连接,而客户机和相关的服务器进程则会来来去去。
https://stackoverflow.com/questions/6849536
复制相似问题