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

时间:2011-08-22 05:54:31

标签: java

我在项目中使用连接池。我想知道打开了多少个连接? 我已经给出了20个连接作为最大连接数。如果超过20,会发生什么?池会管理这个还是会出错?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

必须依赖于特定的连接池实现。

从概念上讲,有可能等待,失败或受害。

无限期等待可能是一件非常糟糕的事情,在一个配置错误的系统中,反社会客户端连接时间太久,服务员的数量可能会变得非常大。

对于数据库连接来说,任意地牺牲一些现有客户端并进行连接通常是不合理的(或者确实可能)。所以这不太可能被人看到。

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

答案 2 :(得分:0)

要知道在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,会发生什么?”取决于你的连接池的实现,我不会说更多,因为它已被回答。

希望这有用。