Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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
Java 如何知道从我的应用程序打开的DB连接数?_Java - Fatal编程技术网

Java 如何知道从我的应用程序打开的DB连接数?

Java 如何知道从我的应用程序打开的DB连接数?,java,Java,我正在项目中使用连接池。我想知道打开了多少个连接? 我给出了20个连接作为最大连接数。如果超过20,会发生什么?池将管理此问题还是将通过错误解决此问题?这更多是一个与配置相关的问题。但通常,当新的连接请求导致连接数超过最大连接设置时,池将抛出异常。必须取决于特定的连接池实现 从概念上讲,等待、失败或受害都是可能的 无限期地等待可能是一件非常糟糕的事情,在一个配置不好的系统中,反社会客户保持连接的时间太长,侍者的数量可能会增加很多 对DB连接而言,任意伤害某些现有客户机并获取其连接通常是不合理的(

我正在项目中使用连接池。我想知道打开了多少个连接?
我给出了20个连接作为最大连接数。如果超过20,会发生什么?池将管理此问题还是将通过错误解决此问题?

这更多是一个与配置相关的问题。但通常,当新的连接请求导致连接数超过最大连接设置时,池将抛出异常。

必须取决于特定的连接池实现

从概念上讲,等待、失败或受害都是可能的

无限期地等待可能是一件非常糟糕的事情,在一个配置不好的系统中,反社会客户保持连接的时间太长,侍者的数量可能会增加很多

对DB连接而言,任意伤害某些现有客户机并获取其连接通常是不合理的(或确实可能的)。所以这不太可能被看到


这将导致一个故障-您将在“无可用连接”行中得到一个异常。一些连接池实际上会在抛出该异常之前等待一段时间(一段可配置的时间)-这可以更好地处理偶尔出现的需求高峰情况。

要了解Oracle中打开的连接数,可以编写如下查询

SELECT s.program, s.server, p.spid, s.username FROM v$session s, v$process p
WHERE s.type = 'USER'
and s.username != 'sys';
该查询假定您以专用服务器模式连接到Oracle,并且该查询统计用户sys以外的其他连接

然后可以在应用程序中使用结果。第二个问题,“如果超过20,会发生什么?”取决于您对连接池的实现,我不再多说了,因为已经回答了


希望这有帮助。

您使用的是Apache Commons对象池还是某种连接池框架?您在哪里配置了连接池?在您的数据库、应用服务器或您正在使用的某些框架中?@Chaitanya,请告诉我们您正在使用的框架。