IIS应用程序池与Oracle Pooling Ado.Net之间的关系

时间:2019-01-28 20:20:17

标签: .net oracle ado.net

IIS应用程序池(Windows Server 2012 R2)中的辅助进程与Oracle 11g池之间有什么关系? 我有一个用C#Framework 4.0编写的X应用程序,该应用程序首先配置了一个AppPool,并且其最大工作进程为1,然后更改为4。

我的连接字符串是: 数据源=示例;用户ID = YYYY;密码= BBB;连接超时= 30;最大池大小= 100;合并= true;最小池大小= 5; Incr池大小= 5; Decr Pool Size = 2;连接寿命= 300

如果确实具有池化功能,那么我现在有1个工作进程,总的最大池大小为100。问题是,如果我将工作进程上载到4,则最大总大小为400,否则它保持为100? (我在这里https://stackoverrun.com/es/q/4340018读过)

以上内容是因为我已经知道编排器是连接字符串,所以如果重复该字符串,即使它来自另一个应用程序池(IIS)触发它的请求,它也会在Oracle Pooling中重用。

其他问题:

谁增加了5个联系? (增量池大小= 5)Ado.Net? 如果我关闭应用程序,那5个连接是否已从池中删除?还是所有泳池?

我是否已阅读到Ado.Net每3分钟检查一次Pooling的无效连接?是这样吗?

谢谢

1 个答案:

答案 0 :(得分:1)

请不要混合使用IIS应用程序池和数据库连接池(例如Oracle连接池)。

IIS应用程序池和Oracle连接池完全无关。 IIS池表示IIS将具有应用程序请求池的连接数,并且还有助于隔离使用同一IIS的其他Web应用程序。因此,IIS工作进程不关心应用程序如何连接到任何数据库服务器。

这是IIS Application pool documentation中的正式定义:

  

应用程序池定义了一组由一个或多个工作进程组成的组,这些进程配置有通用设置,这些设置可为分配给该应用程序池的一个或多个应用程序提供请求。因为应用程序池允许一组Web应用程序共享一个或多个配置类似的工作进程,所以它们提供了一种方便的方法来将一组Web应用程序与服务器计算机上的其他Web应用程序隔离。

这与Oracle连接池完全不同。基本上,这是任何数据库服务器都具有的通用功能,而并非特定于Oracle。基本上,连接池在达到与单个数据库服务器的最大数据库连接限制之前,可以处理多少个并发数据库连接,因为不同的数据库服务器可能会设置不同的限制。