【发布时间】:2017-01-19 15:11:22
【问题描述】:
我有一个 Web 应用程序的生产场景,当提交表单时,数据通过 JDBC 存储在 Oracle DB 的 3 个表中。有时,当应用程序尝试通过 Java 代码连接到 Oracle DB 时,我会在日志中看到连接超时错误。这是间歇性的。
以下是例外:
SQL exception while storing data in table
java.sql.SQLRecoverableException: IO Error: Connection timed out
大多数情况下,Web 应用程序能够连接到数据库并在其中插入值,但有时我会遇到超时错误并且无法在其中插入数据。我不确定为什么会出现这个间歇性问题。当我检查应用程序中的连接池配置时,我注意到以下几点:
池大小(此池可以打开的最大连接数):
10池等待(如果所有池连接都在使用中,则在引发异常之前的最大等待时间,以毫秒为单位):
1000
由于池大小仅为 10,如果有多个用户尝试连接到数据库,是否会出现此连接超时问题?
此外,由于数据插入发生在 3 个表中,我们只在一个连接本身中进行整个插入。我们不会为每个单独的表打开每个数据库连接。
注意:此应用程序部署在 AEM(内容管理系统)服务器上,连接池配置由它们提供。
更新:我尝试在连接池中设置验证查询,但仍然收到连接超时错误。我不确定连接池是否检查了验证查询。我附上了上面的连接池供参考。
【问题讨论】:
-
您能说明一下池是如何配置的吗?喜欢配置文件或界面只是为了看看有哪些选项可用?
-
如果您要与多个用户执行复杂的操作,等待一秒钟并不是很长的时间。