基于B/S的高校在线考试系统并发性和可靠性的优化

2012-12-20 08:24李隘优
中原工学院学报 2012年4期
关键词:字段客户端答题

李隘优

(闽西职业技术学院,福建 龙岩364021)

在线考试系统是高校校园数字化建设项目中教学管理信息化平台的一个重要组成部分.在线考试系统的实现,可辅助高校组织考试,对考试工作进行系统化、科学化管理,真正实现用较小的代价为学校提供较高性能、标准化的考试管理服务,减轻教师的工作负担,激发学生的学习兴趣,从而为高校培养高端技能型人才提供了必要的保障[1].

但是,现有在线考试系统安全性较差,并发控制较薄弱,且可靠性不强.因此,研发一款能满足在线考试,且扩展性强、安全性高、可靠性强和运行效率高的在线考试系统,是非常迫切的.其中,优化B/S在线考试系统的并发性和可靠性,是解决当前问题的重中之重.

1 在线考试系统的并发性优化策略

1.1 并发性概述

所谓并发性,是指在相同的时间间隔内,同时有2个或者2个以上的事件发生.其中的很多事件是随机同时发生的,这类事件称为并发事件[2].一般情况下,在B/S系统中,数据在服务器和客户机中来回传输,数据处理的实时性要求较高,相关操作非常频繁,故存在着较多的不同层次的并发事件.

并发事件的多少是衡量一个系统性能好坏的标准.一般情况下,B/S系统能承载的并发事件越多,系统的性能就越好.因此,在进行B/S系统设计时,应尽可能地对其并发性进行挖掘和控制,以不断提高其并发控制能力.提高B/S系统并发性的主要措施分为3类:时间重叠、资源重复和资源共享[2].

1.2 系统并发控制的实现

在线考试模块中,同时参加考试的用户数较多,少则数十人,多则几百甚至上千人,这就对系统的并发控制提出了更高的要求.因此,如何对在线考试系统设计策略进行优化,提升服务器的性能,是必须解决的问题.

经过分析,在在线考试系统的运行过程中,致使服务器响应慢甚至死机的主要因素包括:自动组卷的算法、同时在线的考生数和考生考试时提交至服务器处理的数据量和操作量.针对这些因素,本文采用以下几种方法来提高系统的并发控制能力.

1.2.1 基于二级存储策略的并发控制

目前,有些考试系统将考生作答的信息存储在服务器的数据库中.此方法存在的不足是:每间隔较短的时间就将考试信息写入到服务器的数据库中,当多人同时参加考试时,高并发的数据访问给系统带来较大的负载,严重时甚至可能导致服务器崩溃.有些考试系统将考生作答的信息存储在客户端中.此方法存在的不足是:①当考试时间结束时,由于大多数考生集中交卷,带来瞬间的高并发数据访问,系统开销巨大;②有些客户端安装了还原卡,保存在客户机上的数据会因重启而丢失,因此数据存储在客户端并不安全[3].本文提出了二级存储策略的并发控制方法,用来解决系统的并发控制问题.

所谓二级存取策略,就是指考生的答题数据先存储在客户端,然后定期更新至服务器的数据库中,从而解决数据存储的并发问题,且在一定程度上保证了数据的可靠性.具体流程如下:

(1)采用 UserData Behavior技术,通过JavaS-cript将考试信息以XML格式写入到UserData存储区中,这些数据不会因重启而丢失.

(2)每间隔一段时间(此时间可设置稍长,如10min,以避免服务器操作过于频繁),调用更新检测和保存数据函数,将客户端UserData存储区中的数据写入服务器对应的表中.

(3)如系统掉电或死机后重启客户端,重新登录考试系统,调用UserData Behavior的getAttribute()方法读取客户端UserData存储区中的数据,恢复到断点前的状态.

(4)重启后,如系统发现客户端UserData存储区中的数据为空,则自动读取服务器数据库中的相应数据,进行现场恢复.这样就解决了安装还原卡的客户机重启后数据丢失的问题.

1.2.2 服务端生成静态页面的并发控制方法

一般情况下,考生进入考试系统需要在客户端生成JSP页面,其生成过程是边解析边执行[4].此方法的不足是:解析JSP的时间较长,导致服务器的开销较大;同时在线的考生数较多时,系统访问速度过慢,甚至崩溃.本文采用服务端生成静态页面的方法,以解决客户端生成JSP页面带来的不足.

服务端生成静态页面方法的基本思想是:

(1)服务器通过调用JavaBean函数生成页面信息(如页面内容、布局等)字符串.

(2)在JSP文件中调用页面信息字符串,并生成HTML格式的页面.

1.2.3 降低服务器数据更新量的并发控制方法

当更新服务器数据库中的答题表时,多数考试系统在服务器中对需要更新的字段进行判断,如该字段已有信息,则进行替换操作,否则进行插入操作.这种方法的不足是:在更新数据之前,需要在服务器中进行判断,导致提交的数据量剧增,服务器性能在高并发下明显下降甚至死机,从而导致数据更新失败[5].为此,本文提出降低服务器数据更新量的方法,用来提高系统的并发控制能力.

所谓降低服务器数据更新量,是指在客户端中利用JavaScript脚本对服务器的数据更新情况进行判断,直接将要更新的信息写入数据库答题表相应字段中.用此方法代替原来在服务器中进行判断的做法,减少了提交至服务器的判断信息,减轻了服务器的工作负担,从而增强了系统的并发控制能力.具体算法过程如下:

(1)客户端

①根据题量的规模来定义数组;

②写入数据前与已定义的数组对应值进行匹配,若该字段已有数据,则将数据赋值给数组中对应的变量;

③用iFrame技术,提交在线考试页面的部分数据(如试卷号,考生号等).

(2)服务器

①将待写入的数据信息构成数组;

②通过Hibernate,用数据信息数组中的数据对数据库进行更新.

1.2.4 错开时间分批开始考试的并发控制方法

在考生数量庞大的情况下,同时开始考试会导致服务器负载迅速达到峰值,严重时甚至可能导致服务器瘫痪.为降低服务器的压力,系统采用错开时间分批开考的方法.具体流程为:用户进入考试系统,点开始考试后,在服务器端的考试时间中加上一个随机延时时间(如0~60s,此时间可在考试管理中修改),返回给客户端的计时器函数处理;当这个时间减少至考试时间时,考生才可以进行答题.

各考生的考试计时由系统倒计时来实现,总时间相同,不存在先考占优的情况.因此,此方法降低了服务器的瞬间负载,提高了系统的并发控制能力.

2 在线考试系统的可靠性优化策略

所谓可靠性,是指系统在受外部条件作用下能否保证正常运行的一个衡量指标,这种外部条件包括软、硬件的故障等.当故障发生时,故障的转移和断点的恢复是可靠性必须考虑的问题.

在线考试时,可能出现人为或非人为的非法操作情况,如考生故意关机(以争取比正常操作更多的答题时间)、掉电和死机等.此类情况严重影响系统的正常运行,且有失考试的公平性.

针对在线考试的业务需求,结合系统可靠性的特点,本文提出了以下解决方案:

2.1 考生故意关机争取更多答题时间的解决办法

目前,大多考试系统在计算机关机时,计时器会暂停.重启计算机,进入系统后会在已用时间的基础上继续计时.这样就给了考生可乘之机,如考生遇到难度较高的题目时,记下题目,关机作答,等完成答案后,再重启计算机,进入系统填写答案,从而能争取到更多的答题时间.本文提出双计时认证的方法,用来解决考生故意关机争取更多答题时间的问题.

所谓双计时认证,是指开考计时和考试中的实时计时相结合来认定考生的已用考试时间.具体算法流程如下:

(1)考生登录后,系统进行抽题,并为每一个考生新建一个答题表,用于答题.其中Examtime字段用于保存该次考试的限定时间,Starttime字段用于保存开考时间,Currenttime字段用于保存系统运行的当前时间.

(2)当考生点击开始考试时,系统读取服务器的时间,并记录在答题表的Starttime字段中.

(3)系统在运行过程中,实时地去获取服务器的当前时间,并更新到答题表的Currenttime字段中.

(4)当 Currenttime-Startime-Examtime>5min(此值在系统管理端中可修改)时,系统强制提交考卷并结束考试.如遇特殊情况,导致用时超过设定值,考生继续考试须进行申请,并经管理员在管理端设置允许延时后,才能进行考试延时.

通过以上方法,可以解决故意关机获取更多答题时间的问题,也能对非人为故障导致考试系统终止考试的情况作出相应的处理.

2.2 现场保护和恢复的解决办法

在线考试时,因断电、死机等不可避免的因素造成计算机重启,可能丢失考试现场和考试数据,严重损害考生的利益.因此,系统应在现场保护和恢复上提供充足的保障.以上在并发控制中提出的二级存储策略,即可用于解决在线考试的现场保护和恢复问题.

(1)若客户端没有安装还原卡,重启计算机后,系统读取UserData存储区中的数据进行现场恢复.

(2)若客户端已安装还原卡,重启计算机后,数据会丢失.这时系统会自动读取服务器上的相应数据进行现场恢复.

3 测 试

系统的性能测试主要包括连接速度、负载、压力等测试.其中,连接速度测试是对系统响应时间进行的检测;负载测试是系统在大量用户同时且长时间操作的条件下,对服务器能否正常运行及资源是否有很高的利用率进行的检测;压力测试是在一定数量的用户对系统进行访问时,对系统及服务器的运行情况进行的检测.本文采用LoandRunner作为测试工具,对在线考试系统进行性能测试.

3.1 LoadRunner介绍

Loadrunner是一种预测系统行为和负载的性能测试工具,可以通过它来模拟成千上万的用户访问系统,从而对B/S系统进行并发负载和实时性能监测,并自动整理生成测试结果,便于测试员寻找被测系统的性能瓶颈,写出测试报告[6].

3.2 测试方案

本文主要对在线考试系统进行负载测试和压力测试.具体实施方案如下:

(1)模拟虚拟用户的运行场景,用200个并发用户进行负载测试,并分析测试结果.

(2)逐步加大负载压力,用250个并发用户进行负载测试,并分析测试结果.

(3)当系统测试性能指标还正常时,继续加大并发用户的负载量(并发用户数增量递减),直至系统性能出现问题.

分析比较不同数量并发用户下的负载压力测试结果,当该系统用到590个并发用户时,各项性能指标还正常,如图1所示.

图1 590个并发用户同时访问时的事务概要图

但当用到591个并发用户时,就会发现有些用户 的指标会出现Fail的现象,如图2所示.

图2 591个并发用户同时访问时的事务概要图

综上所述,该系统的并发用户数可达590个,当超过这个用户数据时,系统就会出现用户被拒绝访问的情况.

4 结 语

本文对在线考试系统的并发性和可靠性进行了分析,提出了综合改进方案,并进行了负载测试.结果表明,优化后系统能承受较大并发的冲击,可同时有590个用户在线考试,在一定程度上提高了系统的并发性;解决了考生故意关机争取更多考试时间和系统现场保护和恢复问题,提高了系统的可靠性.该解决方案为其他B/S系统解决并发性和可靠性问题提供了参考.

[1]沈斌,李兴国,钟金宏,等.基于多队列和多线程的短信实时并发控制算法[J].计算机工程,2008(4):62-65.

[2]张敏霞.基于高并发及大数据量的B2B商务系统的设计与实现[J].河南工业大学学报(自然科学版),2009(1):41-44.

[3]沈斌,李兴国,钟金宏,等.基于多队列和多线程的短信实时并发控制算法[J].计算机工程,2008(4):62-65.

[4]郭新峰.新型考试系统的实现[J].电力学报,2005(2):45-55.

[5]吴峻,聂勤务.基于 Web的分布式数据库实时访问策略研究[J].微机发展,2004(4):116-121.

[6]杨萍,李杰.利用LoadRunner实现 Web负载测试的自动化[J].计算机技术与发展,2007(1):242-244.

猜你喜欢
字段客户端答题
邀你来答题
邀你来答题
邀你来答题
邀你来答题
如何看待传统媒体新闻客户端的“断舍离”?
浅谈台湾原版中文图书的编目经验
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
题名与责任说明附注字段用法分析