3

我在 ColdFusion Administrator 中创建了 2 个不同的数据源连接(到 MS SQL Server 2008),它们具有完全相同的设置,但连接的实际名称除外。我的问题是这会创建两个不同的连接池还是共享一个?

4

3 回答 3

1

他们有不同的游泳池。池化由cf java代码实现。(或者是jrun代码中的那部分......)。它不使用任何基于 jdbc 的池。Cf10 可以切换到基于 jdbc 的池,但我对此表示怀疑。

作为测试

将两个池上的“验证连接”sql 设置为等待延迟“00:01:00”或类似的(等待 1 分钟)。由于每个池的池访问是单线程的 - 包括运行验证所花费的时间 - 有 2 个页面,每个页面都访问不同的数据源,因此请求两者。如果他们在 1 分钟后完成,则为 2 个池,如果一页需要 1 分钟,另一页需要 2 分钟 - 这是一个池

作为旁注,如果在这 1 分钟内验证您拔出网络电缆(导致 jdbc 套接字永远保持打开等待响应),您的线程池现在已死,您需要重新启动 CF

于 2013-07-03T10:51:14.470 回答
1

他们将有不同的游泳池。池是在数据源级别定义的,就 ColdFusion 而言,您有两个不同的数据源。为什么会有两个具有完全相同设置的不同数据源?我想如果你想强迫他们使用不同的连接池。我想不出一个原因。

我发现这个页面记录了 ColdFusion 中如何处理数据库连接。请注意,为每个数据源设置了“维护数据库连接”设置。

这是与该页面中的连接池相关的部分(以防它消失):

如果为数据源设置了“维护数据库连接”,ColdFusion Server如何维护连接池?

当为数据源设置“维护数据库连接”时,ColdFusion 在首次连接到数据库后保持连接打开。在第一次连接后,它不会注销数据库。您可以根据上述步骤 d 中的说明更改此设置。ColdFusion Administrator 中的另一个设置,称为“将缓存的数据库连接不活动时间限制为 X 分钟”,在 X 分钟不活动后关闭“维护的”数据库连接。此设置是服务器范围的,并确定何时最终关闭“维护”连接。您可以通过转到 ColdFusion 管理员中的“缓存”选项卡来修改此设置。修改“将缓存数据库连接不活动时间限制为X分钟”的界面如下所示:

在此处输入图像描述

如果一个请求正在使用已经打开的数据源连接,并且对数据源的另一个请求进入,则建立一个新连接。由于任何时候只有一个请求可以使用一个连接,因此并发请求将打开一个新连接,因为没有空闲的缓存连接可用。连接池可以增加到为每个数据源设置的同时连接限制的设置。此设置称为“限制连接”,位于 ColdFusion 管理员中。单击数据源选项卡之一,然后单击您的数据源之一。单击“CF 设置”并在“限制连接”旁边打勾,并在“启用 X 次同时连接的限制”这句话中输入一个数字。请注意,如果您没有在数据源设置下设置此项,

此时,ColdFusion Server 维护了一个包含两个数据库连接的池。每个连接都保留在池中,直到达到“连接超时”期限或超过不活动时间。如果前两个选项均未实现,则连接将保留在池中,直到重新启动 ColdFusion。

“连接超时”设置关闭连接并将其从池中删除,无论它是否处于活动状态。如果进程处于活动状态,它不会终止连接。您可以通过转到 ColdFusion Administrator 中数据源的“CF 设置”来更改此设置。注意:只有“缓存数据库连接不活动时间”设置才会结束连接,如果它没有被使用,则将其从池中删除。您还可以使用“连接超时”来覆盖“缓存数据库连接不活动”设置,因为它仅适用于单个数据源,而不适用于所有数据源。

于 2013-07-03T14:35:43.623 回答
0

尝试使用两个不同的数据源创建临时表,如果第二个查询出错,它使用相同的池并完美运行文件意味着不同的池。

于 2013-07-03T09:22:22.083 回答