连接超时为0的优缺点是什么?
Connection Lifetime=0有什么用途?
例如:
(Database=TestDB;
port=3306;
Uid=usernameID;
Pwd=myPassword;
Server=192.168.10.1;
Pooling=false;
Connection Lifetime=0;
Connection Timeout=0)
连接池的作用是什么?
连接超时为0的优缺点是什么?
Connection Lifetime=0有什么用途?
例如:
(Database=TestDB;
port=3306;
Uid=usernameID;
Pwd=myPassword;
Server=192.168.10.1;
Pooling=false;
Connection Lifetime=0;
Connection Timeout=0)
连接池的作用是什么?
超时(Timeout)是指在放弃请求前等待响应的时间长度。TimeOut=0表示您将一直等待连接,直到永远。如果您连接到非常慢的服务器并且需要花费12个小时来响应,那么这也是可以的😊。但通常情况下会出现问题。为了及时发现目标是否出现故障并继续进行操作,请在请求上设置合理的超时时间。
连接寿命(Connection Lifetime) = 在重新创建之前连接存在的时间长度。寿命为0表示永远不会重新创建。通常情况下没有问题,因为杀死和重新创建连接很慢。但通过各种错误可能会导致连接陷入不稳定状态(例如处理奇怪的三方交易)。但99%的情况下,将连接寿命保持无限是好的。
连接池(Connection pooling)是一种处理连接生成非常缓慢的方式。因此,而不是对每个请求创建一个新的连接,相反地提供一个预先准备好的连接池,例如10个连接。当您需要一个连接时,可以借用一个,使用它,然后将其返回。您可以调整池的大小来更改应用程序的行为。更大的池=更多的连接=更多的线程同时运行,但这可能会使您正在进行的任何操作不堪重负。
总结:
ConnectionTimeout=0是不好的,将其设置为合理的时间,例如30秒。
ConnectionLifetime=0是可以的。
ConnectionPooling=disabled是不好的,您可能需要使用它。
我知道这是一个旧的线程,但我认为指出一个情况很重要,在这种情况下,您可能希望禁用连接池或使用连接生命周期。
在某些环境中(特别是在使用Oracle时,或者至少在我的经验中),Web应用程序是设计成使用用户的凭据与位于服务器配置文件中的固定连接字符串连接到数据库。在这种情况下,启用连接池将导致服务器为访问网站的每个用户创建一个连接池(参见 连接池碎片化)。根据情况,这可能是好事情也可能是坏事情。
然而,当数据库服务器配置为由于最大空闲时间超过而终止数据库连接时,连接池会成为一个问题,因为数据库服务器可能会杀死仍驻留在连接池中的连接。在这种情况下,连接生命周期 可以派上用场,丢弃这些已被服务器关闭的连接。