Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL连接_Postgresql - Fatal编程技术网

PostgreSQL连接

PostgreSQL连接,postgresql,Postgresql,我的postgres连接永远处于空闲状态,尽管在代码中使用了连接关闭语句。数据库在出现致命内存错误的阈值后挂起。这会在连接关闭时提示重新启动 我如何从根本上解决这个问题?为什么连接没有关闭 代码片段: try { session=sessionFactory.openSession(); Transaction tx = session.beginTransaction(); } finally { if (session != null) {

我的postgres连接永远处于空闲状态,尽管在代码中使用了连接关闭语句。数据库在出现致命内存错误的阈值后挂起。这会在连接关闭时提示重新启动

我如何从根本上解决这个问题?为什么连接没有关闭

代码片段:

try {

    session=sessionFactory.openSession();
    
    Transaction tx = session.beginTransaction();

} finally {  
    if (session != null) {  
        session.close();
    }    
}
<property name="hibernateProperties">
<props>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">auto</prop>
<prop key="hibernate.transaction.auto_close_session">on_close</prop>
<prop key="hibernate.multi_tenant_connection_provider">com.myapp.connections.MultiTenantConnectionsProvider </prop>
<prop key="hibernate.multiTenancy">DATABASE</prop>
<prop key="hibernate.tenant_identifier_resolver">com.myapp.connections.CurrentTenantIdentifierResolver </prop>
</props>
</property>
休眠配置文件:

try {

    session=sessionFactory.openSession();
    
    Transaction tx = session.beginTransaction();

} finally {  
    if (session != null) {  
        session.close();
    }    
}
<property name="hibernateProperties">
<props>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">auto</prop>
<prop key="hibernate.transaction.auto_close_session">on_close</prop>
<prop key="hibernate.multi_tenant_connection_provider">com.myapp.connections.MultiTenantConnectionsProvider </prop>
<prop key="hibernate.multiTenancy">DATABASE</prop>
<prop key="hibernate.tenant_identifier_resolver">com.myapp.connections.CurrentTenantIdentifierResolver </prop>
</props>
</property>

线
假的
汽车
闭上
com.myapp.connections.MultiTenantConnectionsProvider
数据库
com.myapp.connections.CurrentTenantIdentifier解析程序

session.close()
仅将连接放回池中。如果你想让池在一段时间后关闭物理连接,你需要更改池的配置。你能指导我如何更改配置以实现它吗?你需要检查你正在使用的连接池的文档。不要关闭数据库连接,保持它们打开并重用它们(池)。限制数据库连接的数量。是@Laurenz。我们正在尝试使用c3p0进行连接池,并且连接保持打开状态。但经过一定时间的活动后,数据库会出现致命的内存错误。这将提示重新启动。