首页 新闻 搜索 专区 学院

请教高手,并发数问题

0
悬赏园豆:20 [已关闭问题]

现在有一个项目,客户要求这样,查询系统最大并发数200,查询用户超过200个时,进入排队队列,等待时间为1分钟 超过1分钟系统自动切断事务,请教处理思想,谢谢

无心雨云的主页 无心雨云 | 初学一级 | 园豆:100
提问于:2009-01-15 11:41
< >
分享
其他回答(3)
0

- -?? 撒意思

你用个单态的List存在线用户(userId,activeTime)! 每一分钟整理一次List,比对时间Ticks,然后剔除用户? 你想这样吗?

Allie | 园豆:707 (小虾三级) | 2009-01-15 11:55
0

这个东西应该可以使用已有的东西,例如ThreadPool,ThreadPool可以配置、自己搞也行,不过要控制的好。

其实思路你自己已经说了。

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-15 13:29
0

Allie 的方法可行,不过应用程序池重启后所有信息都会丢失,不过要求不是很严格的话,影响应该不大。

5yplan | 园豆:1330 (小虾三级) | 2009-01-15 18:42
0

Queue + ThreadPool模式:thread pool设为200;对于收到的request,如果thread pool有空闲线程,直接交给thread pool;否则先放入queue中,等thread pool有空闲线程再从queue中取出request开始处理,同时要进行1分钟的超时控制,一般还要限制queue的最大长度。

这个模型并不复杂,可以自己实现queue的管理和任务调度,thread pool可以用CLR的ThreadPool,也可以用开源的SmartThreadPool(我们的项目用的这个,推荐)。另外,MS不久前出的CCR就是这个Queue+ThreadPool模型,也很方便。

相关链接:

http://www.codeproject.com/KB/threads/smartthreadpool.aspx

http://www.cnblogs.com/bearhand/archive/2008/06/26/1213181.html

Todd Wei | 园豆:170 (初学一级) | 2009-01-15 22:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册