加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库 – 配置的阻塞超时(JBoss 7和Postgres)中没有可用的管理

发布时间:2020-12-12 16:11:09 所属栏目:MsSql教程 来源:网络整理
导读:定期我得到错误: ERROR JDBCExceptionReporter – javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/myDB 08:12:05,928 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-hos
定期我得到错误:

ERROR JDBCExceptionReporter –> javax.resource.ResourceException: IJ000453:
Unable to get managed connection for java:jboss/datasources/myDB
08:12:05,928 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/mySoftware].[jsp]] (ajp–xx.255.0.yyy-8109-21) Servlet.service() for servlet jsp threw exception: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:377) and etc.

.

所以,我有下一个数据源配置.在JBoss AS上:

<datasource jta="true" jndi-name="java:jboss/datasources/myDB" pool-name="ssbs-pssbs" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://xx.255.0.yyy/myDatabase</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql-jdbc4</driver>
                    <pool>
                        <min-pool-size>30</min-pool-size>
                        <max-pool-size>150</max-pool-size>
                        <prefill>true</prefill>
                        <use-strict-min>false</use-strict-min>
                        <flush-strategy>FailingConnectionOnly</flush-strategy>
                    </pool>
                    <security>
                        <user-name>tick</user-name>
                        <password>tack</password>
                    </security>
                    <validation>
                        <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
                        <validate-on-match>false</validate-on-match>
                        <background-validation>false</background-validation>
                    </validation>
                    <timeout>
                        <blocking-timeout-millis>30000</blocking-timeout-millis>
                        <idle-timeout-minutes>5</idle-timeout-minutes>
                    </timeout>
                    <statement>
                        <share-prepared-statements>false</share-prepared-statements>
                    </statement>
                </datasource>

在我的Postgres服务器中,我允许在500上的max_connection.
为什么我会得到这个例外?

解决方法

您的主要问题可能是连接泄漏,但可能不是.换句话说,数据库事务正在离开池并且不被返回.在这种情况下,有一些具体的事情要开始,因为问题可能是代码问题,而不是数据库问题.

首先要检查的是pg_stat_activity中的所有内容的当前状态.这包括最近的查询和事务状态.在连接泄漏中,您可能会发现大量具有类似查询的IDLE连接.这些查询可以帮助您跟踪连接泄漏.另外在连接泄漏中,当问题开始时,它会一直持续到重新启动.

如果问题实际上太少的连接可用,那么您将看到很多ACTIVE连接.在这种情况下,会增加池中的连接数.同样在这种情况下,问题会间歇性地发生,然后自身就会出现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读