用户每次打开一个asp.net页面,页面会建立一个数据库连接,然后根据这个页面上的用户ID来查询数据库的内容,待查询完毕则关闭这个链接 (DB conneciton)。最高时期同时在线的用户量达到10万个。 请问这个数据库的 连接/关闭 操作是否会影响效率?- 怎样提高效率? |
|
10分 |
如果不是实时更新可以考虑no sql 速度应该会快一些。
|
重新提问:
非常感谢,你回答了我第一个问题,我想你的意思是可以的,因为连接池在ado.net里建立,和DB1主连接没关系; DB2同样可以建立连接池。 第二个问题我没有说人为编程作甚么,只是用户达到10万,是否每个人连接的时候都需要建立一个连接呢?还是可以重复使用其他人的连接 (在ado.net的连接池内)? 如果每个人都需要自己的连接,那么会不会出现连接池“过满”的现象,影响系速度呢? |
|
10分 |
.net有连接池,如果你的连接字符串完全一致的话,问题不大,他会从池中取
|
5分 |
关于sqlserver的连接数,参考
http://www.cnblogs.com/wlb/archive/2012/04/08/2437617.html |
多谢,那片文章说:微软在MSDN上对最大连接数的定义是:“默认是0,代表不限制,但最大连接数是32767”?
那就是说10万用户无法同时连接了? |
|
那就是说10万用户无法同时连接了?
|
|
5分 |
正好借地问个问题
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { SqlConnection cn=new SqlConnection("data source=USER-20150226RI;uid=sa;pwd=123456;initial catalog=test"); cn.Open(); cn.Close(); Console.Read(); } } } 很简单的打开关闭连接,但是通过SQL profiler或者sp_who观察,当代码运行到(Read())这里时已经关闭了SqlConnection,但是数据库的活动连接还是存在,仅当程序结束后才会消失,那么问题来了,如果我有10w或者更多的用户同时在运行程序,那数据库活动连接不是一直保持很多? |
好问题,顶!
|
|
10分 |
10万用户同时连接的话,一个sql server数据库不够的,得花钱买硬件哈。
另外考虑把经常查询的东西用缓存。 |
5分 |
IIS 是有一个并发上限的
|
IIS 是有一个并发上限的 – 请问是多少?
|
|
5分 |
一般一台服务器的并发上限一般也就几千而已
|