现象:210多人考生同时参加考试,出现卡顿现象。并且部分考生进行考试过程中出现获取试题卡顿现象。
分析问题:
主要进行应用程序分析。是因为当考生点击开始考试的时候,会把本次考试的答题结构插入到表中。假如有100道题。100*210=21000条记录插入到表中。然后先抢到资源的考生,也就是把答题结构给写入数据库中。正常答题。可是还有大部分考生出现卡顿情况,这个过程中有答案更新,有获取新的试题信息。
解决问题:
既然当考生点击开始考试的时候,会给每一个考生插入相应的答题结构。那我可以提前写入。
优化策咯:
1,我在老师的管理端,添加一个加载数据的功能。每当一个老师准备一场考试的时候,老师点击一次加载数据,这样把当前考试中的所有考生的答题结构全部加载到数据表中。
2,针对部分考生取题过程出现卡顿。采用ehcache缓存试题对象到磁盘上。这样所有考生在答题过程中一道一道取试题的时候,都直接在本地磁盘上读取,无需连接数据获取。根据计算机的存储结构,每上一级都是下一级的高速缓存。
3,由于系统在答题过程中,采用AnswerContainer和AnswerLisener配合使用。但是在存储的时候,是循环一条一条更新的。修改为批量更新。
成果:
1,当考生点击开始考试的时候,未出现卡顿情况。
2,考试过程中,取题流畅。