1

我有一个在 jboss eap 6.3 下运行并通过 jTDS 驱动程序连接到 SQL SERVER 2012 数据源的应用程序。问题是连接被打开并且永远不会返回到池中。

起初,没有连接泄漏。我已经使用下面的配置配置了 jboss 来调查这个问题:

<cached-connection-manager debug="true" error="true"/>

Jboss 发现了一个连接泄漏(在一个语句中)并且我修复了它,但问题仍然存在。

数据库配置如下:

<datasource jta="false" jndi-name="java:jboss/datasources/DatabaseDS" pool-name="DatabaseDS" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:jtds:sqlserver://server/database;instance=instance;DatabaseName=database</connection-url>
<driver>jtds</driver>
<pool>
    <min-pool-size>200</min-pool-size>
    <max-pool-size>1200</max-pool-size>
    <prefill>true</prefill>
</pool>
<security>
    <user-name>username</user-name>
    <password>password</password>
</security>
<timeout>
    <blocking-timeout-millis>30000</blocking-timeout-millis>
    <idle-timeout-minutes>1</idle-timeout-minutes>
</timeout>

在生产一天后,jboss-cli 的统计显示如下数据:

在此处输入图像描述

“使用中”分数始终与“活动计数”大小相同。这个数字对我来说没有意义,因为对于每个请求,我们只打开和关闭一个连接,并且在打印时,有 98 个会话连接到 jboss。

调查此应用程序的 SQL Server 进程 (master.dbo.sysprocesses) 所有“活动计数”连接都处于“等待命令”状态并详细说明为“睡眠”

我 100% 确定所有打开的连接也在应用程序中关闭。

大约 2 天后,池 100 % 完成,需要重新启动服务器

什么可能导致这种行为?“活动计数”的值不应该是 200 吗?哪些可能会阻止连接返回池?

4

1 回答 1

0

我有类似的问题,并在这里详细说明了如何解决。请看这篇文章

http://reddymails.blogspot.com/2013/10/troubleshooting-database-connection.html

就我而言,我将 Oracle 与 Hibernate 一起使用。但步骤类似于故障排除。

于 2016-10-20T03:56:22.660 回答