问题描述
硬件配置:64G,全新服务器。在线考试系统,超过200人后网站就没反应了,新考生登录上不去,再考考生提交也没反应。
解决方案
解决方案二:
用sqlprofiler监控看看sqlserver在干什么
解决方案三:
感觉是数据库操作后连接未关闭,导致连接池满了
解决方案四:
数据库缩引没做好吧,
解决方案五:
试题全部从缓存中获取,写入按每次提交写入,怎么也不可能200人就瘫痪了吧,你这又不是200并发
解决方案六:
可能沒有關閉某些占資源的程序。
解决方案七:
数据库连接未关闭。
解决方案八:
资源被占了,可能得优化下
解决方案九:
多半是哪个地方有数据库连接没有关闭的
解决方案十:
是200人随机抽题,随意是从数据库查询,select*,newid()asnfromtableorderbyn.数据库底层用的是微软的企业库EnterpriseLibrary。应该是查询出数据后自动关闭连接吧
解决方案十一:
应该是连接池满了,看看你数据库链接那里是怎么写的,贴代码
解决方案十二:
引用4楼starfd的回复:
试题全部从缓存中获取,写入按每次提交写入,怎么也不可能200人就瘫痪了吧,你这又不是200并发
引用9楼a_000000000的回复:
是200人随机抽题,随意是从数据库查询,select*,newid()asnfromtableorderbyn.数据库底层用的是微软的企业库EnterpriseLibrary。应该是查询出数据后自动关闭连接吧
请用缓存,因为你的试题是不可能发生变化的……随机排序的话可以在内存里操作……类似的代码可能是这样的List<考试题>list=HttpRuntime.Cache["timutimutimutimu"]asList<考试题>();if(list==null){//从数据库读取数据HttpRuntime.Cache.Insert(XXXXXX);//插入缓存}list=list.Orderby(o=>Guid.NewGuid());//随机排序
EntLib内部自动控制释放与否的,当然如果你用了EntLib,但你实际是自己写的相关ado方法,那也不能怪企业库不释放是吧……
解决方案十三:
200人多数据库来说小意思,估计楼主每个用户进行数据操作时没有断开链接吧
解决方案十四:
这系统,真是烂到爆了。
解决方案十五:
遇到异常,最最起码要收集到异常,这样才能分析。干着急没用。
解决方案:
这系统,这方案......随机抽题,难道我每提交一道题的答案都重新抽题?随机完之后,答案又提交到哪里去,你知道我是提交的哪道题的答案?这应该在发卷的时候就直接随机好然后将题目ID插入数据库里,提交答案的时候只去update就好
解决方案:
你看一下服务器的任务管理部器吧,看一下CPU与内存使用状态.