日期:2014-05-18  浏览次数:20430 次

高分请教:关于同时大用户量提交数据导致服务器挂掉或返回错误的问题
前段时间用asp.net开发了一套在线考试系统,发布到win2003上,数据库是sql server2000,现在如果大量用户(比如50人以上)同时读取试卷,或同时交卷,就会出错或导致服务器挂掉(出错信息没有记录下来,我也没办法帖出来,因为条件不允许,不能再做同样的真实测试,但问题只是在多用户同时请求服务器的时候才出现的),但是如果用户比较少(比如10人以下)就不会出现问题,这种情况应该如何应对呢?是因为程序处理上的问题还是哪里设置有问题呢?
  我简略说一下程序读取试卷的过程:
  1.用ajax向一个aspx页面请求获取试题(每次获取一般不超过30道题,因为是怕数据量大,所以按题型取的,比如点击打开填空,那就取20道填空题);
  2.服务页面根据请求参数,调用取题的存储过程(根据试卷设定的规则随机抽题)返回试题ID列表;
  3.服务页面得到抽取的试题的ID列表后,循环读取试题信息,并生成HTML代码(<table>...</table>),返回给前台;
  4.前台页面显示返回的HTML代码,取题的过程就完成了。
  交卷过程:
  用ajax真接提交给一个web service来处理的。


我使用.net提供的测试工程做了压力测试,10000用户量都没有出现问题,我还在不知该如何再去解决这个问题,还有就是做过这方面程序的大侠们对于这样的程序有什么需要注意的地方,希不吝赐教,小子这里谢过了!

我也没有多少可用分,只要能解决这个问题,我都出了~~~~

------解决方案--------------------
服务页面得到抽取的试题的ID列表后,循环读取试题信息,并生成HTML代码( <table>... </table>),返回给前台; 
====
这里对数据库操作的时间长否?
------解决方案--------------------
1.一般高并发性的系统采用消息队列和多线程(在保证不挂服务器的情况下最大利用服务器资源);
2.另外可以考虑js错开时间断的方式读取和写入数据库(我原来做过三千人在线考试系统,交卷那一下采用分批方式提交数据库)

------解决方案--------------------
你还是等到对出错信息做了记录之后再去解决吧。

以后,对出错信息进行记录是重点维护手段,应该在部署程序之前就写好关于如何记录错误信息的文档。
------解决方案--------------------
10000用户量都没有出现问题,强!
------解决方案--------------------
代码有问题的可能性比较大,不至于50人的压力都承受不了
------解决方案--------------------
探讨
谢谢各位的关注!

引用:
1.一般高并发性的系统采用消息队列和多线程(在保证不挂服务器的情况下最大利用服务器资源);
2.另外可以考虑js错开时间断的方式读取和写入数据库(我原来做过三千人在线考试系统,交卷那一下采用分批方式提交数据库)


您好,js错开时间段方式我是否可以这样理解:比如我在提取数据或交卷前先随机产生一个0~5秒的Sleep时间,然后再读取或交卷?如果不采用这样的方式,…

------解决方案--------------------
再弄个类似测试项目放到网上去,大家测一下不就出来了