Java org.postgresql.util.PSQLException:致命:剩余的连接插槽保留给非复制超级用户连接

Java org.postgresql.util.PSQLException:致命:剩余的连接插槽保留给非复制超级用户连接,java,connection-pooling,postgresql-9.6,tomcat8.5,Java,Connection Pooling,Postgresql 9.6,Tomcat8.5,我定期在Spring 4.1、Tomcat 8.5.30和Postgresql 9.6上开发一个应用程序,在尝试访问数据库或连续两次运行maven install时会收到此错误消息: AVERTISSEMENT [http-nio-9000-exec-36] org.apache.naming.NamingContext.lookup Une erreur s est produite durant la résolution de la référence org.postgresql.u

我定期在Spring 4.1、Tomcat 8.5.30和Postgresql 9.6上开发一个应用程序,在尝试访问数据库或连续两次运行maven install时会收到此错误消息:

AVERTISSEMENT [http-nio-9000-exec-36] 
org.apache.naming.NamingContext.lookup Une erreur s est produite durant 
la résolution de la référence
org.postgresql.util.PSQLException: FATAL: remaining connection slots are 
reserved for non-replication superuser connections
at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:691)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:156)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:35)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:47)
at org.postgresql.jdbc42.AbstractJdbc42Connection.<init>(AbstractJdbc42Connection.java:21)
at org.postgresql.jdbc42.Jdbc42Connection.<init>(Jdbc42Connection.java:28)
at org.postgresql.Driver.makeConnection(Driver.java:415)
at org.postgresql.Driver.connect(Driver.java:282)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:736)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:668)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:483)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107)
at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:560)
at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:244)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
at org.apache.naming.NamingContext.lookup(NamingContext.java:839)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
AVERTISSEMENT[http-nio-9000-exec-36]
org.apache.naming.NamingContext.lookup Une erreur s est produite durant
法国解决方案
org.postgresql.util.PSQLException:致命:剩余的连接插槽为
为非复制超级用户连接保留
位于org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:691)
位于org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:207)
位于org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65)
位于org.postgresql.jdbc2.AbstractJdbc2Connection。(AbstractJdbc2Connection.java:156)
位于org.postgresql.jdbc3.AbstractJdbc3Connection。(AbstractJdbc3Connection.java:35)
位于org.postgresql.jdbc3g.AbstractJdbc3gConnection。(AbstractJdbc3gConnection.java:22)
位于org.postgresql.jdbc4.AbstractJdbc4Connection。(AbstractJdbc4Connection.java:47)
位于org.postgresql.jdbc42.AbstractJdbc42Connection。(AbstractJdbc42Connection.java:21)
位于org.postgresql.jdbc42.Jdbc42Connection。(Jdbc42Connection.java:28)
位于org.postgresql.Driver.makeConnection(Driver.java:415)
位于org.postgresql.Driver.connect(Driver.java:282)
位于org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)
位于org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:736)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:668)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:483)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:154)
位于org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118)
位于org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107)
位于org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:560)
位于org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:244)
位于javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:839)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:159)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:827)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:159)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:827)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:159)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:827)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:173)
位于org.apache.naming.SelectorContext.lookup(SelectorContext.java:163)
在javax.naming.InitialContext.lookup(InitialContext.java:417)
位于org.springframework.jndi.jndemplate$1.doInContext(jndemplate.java:155)
位于org.springframework.jndi.jndemplate.execute(jndemplate.java:87)
位于org.springframework.jndi.jndemplate.lookup(jndemplate.java:152)
位于org.springframework.jndi.jndemplate.lookup(jndemplate.java:179)
位于org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)

实际上,我试图实现Tomcat org.apache.Tomcat.jdbc.pool.DataSourceFactory的连接池,但仍然存在问题

Context.xml的一部分:

  <Resource  name="jdbc/newmf01DataSource" 
          auth="Container" 
          type="javax.sql.DataSource"
         username="xx"
         password="xx" 
         driverClassName="org.postgresql.Driver"
         factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
         jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;
                            org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer(trace=true);
                            org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport(threshold=1000,maxQueries=10000);
                            org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx(notifyPool=false,objectName=tomcat.jdbc:type=org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx,name=jdbc/newmf01DataSource)"
        url="jdbc:postgresql://dvdsi975.rouen.francetelecom.fr:5432/pnmf02"
        validationQuery="SELECT 1"
         testWhileIdle="true"
         testOnBorrow="true"
         testOnReturn="false"

        maxIdle="20" 
        maxActive="70" 
        minIdle="10" 
        initialSize="10" 
        logAbandoned="true" 
        removeAbandonedTimeout="60" 
        removeAbandoned="true"
        minEvictableIdleTimeMillis="30000" 
        jmxEnabled="true" 
        useNaming="false"
        maxWait ="10000"
        />  


以前有人看到过这一点,或者请帮我指出正确的方向?

我通过以下方式检查了有多少打开的连接:从pg\u stat\u活动中选择*;我发现很多Idl连接,每次我运行安装时,这个数字都会增加,并超过postgresql的“max connection=100”。
因此,我通过修改minIdle=“10”->“0”

解决了这个问题。谢谢,我修改了context.xml,但仍然存在问题
minIdle>maxIdle
看起来很奇怪。配置中似乎不存在。是的,我更正了我的context.xml可能的副本(您的postgresql数据库拒绝新连接。请检查有多少打开的连接,这是否正常,并增加数据库设置中的最大连接数,或找到减少连接数的方法)