Oracle9i DB上是否允许最大连接数?

时间:2013-08-22 09:57:47

标签: database-connection delay oracle9i

这是我的第一个问题,我希望它得到很好的解释,所以我可以找到答案。

我在一个交付公司的网站项目中工作,该公司拥有Oracle9i服务器中的所有数据。 大多数网络用户只是想知道他们何时会获得他们的包裹,但我确信还有机器人每天多次查询该信息以更新他们的系统。 我正在制作一个代码来阻止这些机器人(例如,在第三次查询之后要求使用验证码,例如15分钟),因为我们有一些Web服务可以用来批量查询所有数据。

现在,我的问题是数据库开始回答非常慢的高峰时间12.00-14.00。 这是我从Web应用程序解析的一些数据。我没有这个级别的Web服务日志,但那里也有很多查询。

enter image description here

它显示我从数据源请求连接时的时间戳,Integer.toHexString(connection.hashCode()),数据源的名称,关闭连接时的时间戳以及两个时间戳之间的差异。 大多数情况下,查询在不到一秒的时间内结束,但昨天我有超过2分钟的奇怪延迟。

数据库上是否允许某种最大连接数,因此当超过该限制时,数据库会在重新尝试之前将查询排队一段时间?

提前致谢。

2 个答案:

答案 0 :(得分:2)

  

数据库中是否允许某种最大连接数

SESSIONSbasic initialization parameters

之一
  

指定可在其中创建的最大会话数   系统。因为每次登录都需要一个会话,这个参数   有效地确定了最大并发用户数   系统

默认值来自PROCESSES参数(1.5倍加22);因此,如果您未更改PROCESSES参数(默认值为100),则数据库的最大会话数将为172。

您可以通过查询V$PARAMETER来确定值:

SQL> select value
  2    from v$parameter
  3   where name = 'sessions';

VALUE
--------------------------------

480
  

所以当它超过该限制时,数据库会在重新尝试之前将我的查询排队一段时间吗?

没有

当您尝试超过SESSIONS参数的值时,将引发异常ORA-00018: maximum number of sessions exceeded

有些东西可能正在排队查询,但它会在您自己的代码中,而不是由Oracle指定。


听起来好像你应该找到更多信息。如果没有达到最大会话数,那么您需要捕获花费很长时间并对其进行分析的查询;我认为这将是更可能出现的情况。如果您达到最大会话数,那么您需要查看您的(公司)代码以确定发生了什么。

您还没有真正解释过您的应用程序,但听起来好像您正在为每个用户打开一个会话(或更多)。您可能想重新考虑这是否是正确的方法。

答案 1 :(得分:0)

感谢编辑vape。

我也发现了真正的问题。 我有一个方法,要求连接到数据源同步,并在高峰时间请求连接时导致锁定。我把它删除了,一切正常。