我正在开发一种高负载的Web服务,它可以提供尽可能快的响应。该服务应与各种数据库保持一系列连接,以提高性能。我建议使用连接池。可能存在与DB的连接问题,因为我们通过VPN可以远程访问数据库。正如我所说,服务应尽可能保持连接。
什么是连接池管理算法?
我有一个连接字符串: 代码:
User Id=inet;Password=somePassw0rd;Data Source=TEST11;Min Pool Size=5;Max Pool Size=15;Pooling=True
然后我只需在我的代码中打开和关闭连接。就是这样。
此刻一切正常。 DB端有五个会话。所以我会杀死一个会话来模拟连接问题。在某些情况下,连接将由池管理器恢复,在某些情况下它不会。
如果我杀掉所有五个连接,它们就永远无法恢复。
我如何确定合并经理?检查DB连接之间的持续时间的任何设置?
我使用validate connection=true;
它似乎对我来说很好,但是如果需要重新连接到DB则需要一些努力,因此拥有一个已经很好的连接会更有效。
我使用的组件是devArt dotConnect for Oracle。 提前谢谢!
答案 0 :(得分:14)
我不确定您正在寻找什么,但这可能很有用:如果连接空闲一段时间或服务器关闭,则会自动清除池。但是,您可以使用OracleConnection的ClearPool或ClearAllPools方法强制池清除(这些方法通常存在于大多数ADO.NET提供程序中,也不是必需的。)
请注意,如果你使用的是Oracle 11g,那么DotConnect也支持Oracle的Database Resident Connection Pooling (DRCP),这可能是最好的集合方式,因为它是由Oracle自己提供的(虽然我对此没有任何经验)