请教关于sqlserver的最大连接问题

jthkl 2016-08-24 10:33:38
最近建立一个网站,人数使用多了以后会有“超时时间已到,但是尚未从池中获取连接”的提示,于是查询baidu,增加max pool size参数,并且设置一个较大的数字就行了。我的问题是百度提到这个参数最大是32767,那是不是说如果不考虑缓存技术或使用多个服务器之类的,只使用一台电脑做服务器,那么就算其他资源都够,最多也就能支持同时3万2千人使用?这样的话那些大的门户网站或12306之类的,就算用了缓存,这个限制也是一个大麻烦吧?
...全文
295 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2016-08-24
  • 打赏
  • 举报
回复
你可以先了解一下什么是数据库的连接池。当然, 上面P哥已经讲了很多了, 我也不再赘述。 回你的疑问来: 既然有成千上万的人访问, 那数据库是如何应付的? 虽然访问的人有那么多(假设1万人), 但是他们不可能在一瞬间同时访问数据库, 大部分有先有后, 有时可能还在思考或者不做一些其它不涉及数据库访问的操作。 所以有1万人在访问你的网站的话,一般情况下, 一瞬间并发访问数据库的只需要几十上百个连接。 当然, 你也可以改大一点(最大不超过 500)——如果有那种抢购之类的功能。 如果你的服务器内存够大, 可以用 sqlserver2014 的内存数据库, 这个的处理能力非常强大。
  • 打赏
  • 举报
回复
网页运行时是无状态的、异步的。你可以想想看,你在看这个 csdn 页面时,就算是所有的查询操作都是从直接访问数据库(而不将99%的请求从数据缓存中来实现),那么你看页面的10分钟之内,访问数据库的时间不过也只有零点零几秒钟。 所以说几千人访问、几万人访问,连接池中的最大连接数量有50也就够了。单纯去百度,你只能了解一个初步的名词儿概念。此时容易被误导。 将来在开发中,如果你遇到了“连接池满”的问题,那就要从自己的编程开发角度去解决。 默认的设置值200,这个参数基本上是不需要调整的。
  • 打赏
  • 举报
回复
如果设置参数为32767,那么几千万人同时在线访问也足够。关键是单机(单服务器)根本到不了这个访问量。
  • 打赏
  • 举报
回复
3万人访问网站,这个参数有50估计也够了。谁跟你说必须32000多呢? 这个是连接池大小。连接池满,说明你的查询效率极低(不能在百十来毫秒内结束),或者是你没有及时立刻关闭数据库逻辑连接。特别是这后者,是个编程大 bug。编程中应该使用
using(var conn= new SqlConnection(connString))
{
    conn.Open();
    .......
}
这样的语法结构,来保证及时关闭逻辑连接,保证将数据库物理连接尽快分配给其它的逻辑连结。 有些人想当然地搞什么“共享一个连接”的设计,其实他不懂“连接池”机制。它独占一个或者多个连接,而不及时把连接释放给连接池,自然就会让连接池出现“满”的异常。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧