Connection Lifetime

Connection Lifetime作用(数据库群集)  2010-11-12 14:17:01|  分类: sql server 2005 |  标签: |字号大http://xiangzhangjun2006.blog.163.com/blog/static/44140966201010122171153/
小 订阅
最近制服系统老出现数据库连接超时的问题,其实是连接池满了导致的。这个问题跟数据库群集有一定关系。关于连接池这个概念大家都知道是为了增加访问速度,所以ASP.NET默认情况下是开通连接池的。我们B/S结构一定要开通。但是数据库群集要注意下几点:

两种情况下连接池里的连接会减少。

    (1)每当一个连接使用完后释放回连接池,如果当前时间减去该连接建立的时间的值大于Connection Lifetime设定的值(秒),该连接被销毁。Connection Lifetime是用于集群数据库环境下。例如一个应用系统的中间层访问一个由3台服务器组成的集群数据库,该系统运行一段时间后发现数据库的负荷太大而需要增加第4台数据库服务器。如果不设置Connection Lifetime,你会发现新增加的服务器很久都得不到连接而原来3台服务器的负荷一点都没减少。这是因为中间层的连接一直都不会销毁而建立新的连接的可能性很小(除非出现增加服务器之后数据库的并发访问量超过增加前的并发最大值)。

    注意:Connection Lifetime很容易让人产生误解。不要认为Connection Lifetime决定了一个连接的生存时间。因为只有连接被释放回连接池的时刻(Close连接之后)才会检查Connection Lifetime值是否达到而决定是否销毁连接,而连接在空闲或者正在使用的时候并不会检查Connection Lifetime。这意味着绝大多数情况下连接从建立到销毁经过的时间比Connection Lifetime大。另外,如果Min Pool Size为N (N > 0),那么连接池里有N个连接不受Connection Lifetime影响。这N个连接会一直在池里直到连接池被销毁。

    (2)当发现某个连接对应的“物理连接”断开(这种连接称为“死连接”),例如数据库已经被shutdown、网络中断、SQL Server的连接进程被kill、Oracle的连接会话被kill,该连接被销毁。“死连接”出现后不是立刻被发现,直到该连接被占用来访问数据库的时候才会被发现。

    注意:如果执行Open()方法时候Data Provider只需从连接池取出已有的连接,那么Open()并没有访问数据库,所以这时候“死连接”还不能被发现。

纵观上述问题,解决方法就是:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 一定改程序吗? 不能在appsettings.json 这配置吗? "ConnectionStrings": { //"Default": "Server=10.10.10.9;Port=3306;Database=dev_aircityproduct_suncere_data; User=root;Password=Develop@2021;character set=utf8;Max Pool Size=20000;Min Pool Size=3;pooling=true;Connection Lifetime=0", //"DefaultBase": "Server=10.10.10.9;Port=3306;Database=dev_aircityproduct_system_auth; User=root;Password=Develop@2021;character set=utf8;Max Pool Size=20000;Min Pool Size=3;pooling=true;Connection Lifetime=0", "Default": "SmqmOrsq3H1F2Mzq/iwSj7lKAEmMOoRZJ1qZMgaDGQFlVL/hU5Q4Og+YYb4ZmluYOiHGibDiWcILQRaLOf+dYLqvEWv14kfUgYx/oiQN0Everex8Y+7n+MzavFXMADfzupj65g8L2v4oyPfy93RH9Npybz2NpPX00rrWlp3T9601kI9f8KMK4O+UA5DP3NRiG2BoUlueRaCSLKHmzPopAg==", "DefaultBase": "SmqmOrsq3H1F2Mzq/iwSj7lKAEmMOoRZJ1qZMgaDGQHBwPvJrBV1rwa2L6GEsK4csqjlN1JMcfQVzA1ct2JA8j91mCxDvMUJEm8Rgj14iJyLxao4B8dQQ2WiNycgo05Y+CHdOcBhIXnFYWBiKHUJD9e3WHvWsb2BZgbxDq8m86D0Bipl2TTGvIRVcZa6tqyz", "OperationBase": "SmqmOrsq3H1F2Mzq/iwSj7lKAEmMOoRZJ1qZMgaDGQFlVL/hU5Q4Og+YYb4ZmluY3F11GMCtW1CEMtjoXp2rzZ0QbMqhdOe/5lA/TIswBfD7RignGEp7NFnB2qp5bkz8hWw/QatQOoqSk1iD0nKJdckrXK5yo16djO2M8PLiyZ+j0BbE22H3DGJUjWFIZawCf5opWz8blpmscHkZMeAPiw==", "EnvDataBase": "SmqmOrsq3H1F2Mzq/iwSj1H2sMJNX1x78SvkHt60Gr5KkmaLKWBjY4yFznNEhIkoGFnUj2j40eNfrzZLrFLPrd6pO+rMRYX0SQxnfCkwE4H92vfc9F6T2fHBuyd+5OUtLHN6OgW8yZuzH/OyCxbUyrdlmYE3DuhbWzcDj6uzLPYJ786+tl1bUcLI6DTKAABw", "TerminusBase": "gqrfF8nrEL5c9ItBpZQQZk+70TTeyW4573wv2Aqk7HENlvtJuN8hfQ3lbD88pBkmt4UuMCSHDbk0ObP/fcw9XCbZTTFCbChH5T8QBRs7M5p3XZk3B/6xypgkh6CLUWQrprdDLEiFXyBI+PZ4ypqekuHYPDGwPmCHgBOMCPTOiYewbyjEgKrPQbso+m/EGVLMK4z1AoQVZSjKR4oIhBkddpEdQ+3MTeA31W7NI5gv4A9It+8b/qGRpQQ3fPe+JYrm", "abpmongodb": "Su6pf/iKKqVu+n4HC2ZbLYBPWdOt7+hGcMZl0tuQgjBfrLgYvjBaE9XBIDTanVzW" },
最新发布
11-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑点燃希望

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值