APP下载

基于分时分段设计的心理健康在线测评系统在高并发用户下的性能优化研究

2020-12-14张锦盛梁林昌

软件导刊 2020年9期
关键词:性能优化

张锦盛 梁林昌

摘  要: 基于B/S架构技术的线上测评或考试系统常常会因为大用户、高并发、大题量、改卷及成绩评测过程复杂的系统特点导致系统在执行过程中导致响应高延迟,资源高占用,从而对系统的稳定性、可靠性造成极大的隐患。这也是本文基于我校与企业的横向课题——中小学生心理健康云平台下的线上测评系统所遇到的问题解决方法,通过对B/S与C/S架构优缺点的混合运用的研究。融入现代JS、Ajax、JSP内置对象、多线程与线程池等技术,对线上测评业务重新进行分时、分段的业务处理设计,已达到性能及系统可靠性的优化和保证。也为类似的基于B/S技术高并发系统的性能优化提供一种基于软件设计模式的低成本解决方案。

关键词: 线上测评系统;性能优化;分时分段;算法设计

中图分类号: TP311.5    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.09.054

【Abstract】: online evaluation or examination system based on B/S architecture technology may often result in high response delay and resource occupation in implementation process for system characteristics of large users, high concurrency, large amount of questions, testpaper change and complicated performance evaluation process, cause great hidden danger to system stability and reliability. The article researches problems and solutions of online evaluation system under mental health cloud platform of primary and secondary school students, which is a horizontal subject of our school and enterprises, based on mixed application research of advantages and disadvantages of B/S and C/S architecture. It integrates modern JS, AJAX, JSP built-in objects, multithreading and thread pool tech nology, redesigns online evaluation business of time division, achieves optimization and guarantee of performance and system reli ability, which provides low-cost solution based on software design pattern for similar performance optimization of high concurrency system based on B/S technology.

【Key words】: Online evaluation system; Performance optimization; Time division; Algorithm design

0  引言

当前线上教育已经越来越普及,学校线上考试在试题管理、改卷算分、统计分析上有着不可比拟额优势,受到各层次学校的青睐。基于B/S结构的考试系统具有免安装、维护容易的优点。但由于整个系统的业务操作都由服务器来承担,因此在业务高时间复杂度、高空间复杂度,大用户、高并发数的运行时,服务器负荷剧增,常常导致性能严重下降,不仅降低了用户的使用体验感,还对系统的稳定性、可靠性造成了极大的隐患[1]。

1  心理健康测评系统面临的高并发、高延迟、低响应的系统问题

当前我们正在开发一个基于B/S结构的中小学生心理健康数据在线评测系统。该系统在结构上与一般考试系统基本相同,但在业务复杂度和数据量上要高于一般考试系统。具体体现在①相比一般考试系统单套试卷的试题数量为30~50,心理测评系统试卷试题则达到80~100的数量。②作為云服务的心理测评系统将面向数十所甚至上百所学校,其用户数及其并发数量更大,并发问题更加突出和严峻。③试卷改卷更为复杂,既要根据维度按系数计算,还要根据效度判断成绩的有效性,最后还要进行复杂的成绩统计与分析[2-3]。其系统的业务设计大致可以通过图1来说明。

从该业务图上我们看到一次完整的测评过程包括了从获取试题信息、生成试卷并加载到浏览器中,一直到提交保存答题结果、改卷、分析试卷,保存成绩与分析结果。在最初的业务结构设计中几乎所有的业务工作都放在了web服务器上。测评系统进行在线测评的执行时间=数据库读取时间+服务器业务处理时间,经过测试后,如图2所示。

2  平摊服务器压力,分时业务处理的系统性能优化设计及改进方法思考

在采用跟踪用户开考和结束考试这两个业务的处理时长,以及对服务器CPU、内存资源在这两个时间段中的观察,CPU在这两个时段中的负载均长期处于100%。服务器内存占用率从平时的约52~60%提高到75~96%。因此,解决测评系统关于可靠性、稳定性低、性能差的问题,我们从两个软件过程设计及改进的角度进行入手:一是优化业务过程及其算法,降低与数据库的存取频率。二是打破服务器闲忙时段,以时间换效率,平摊业务处理负载,移除部分非核心业务到客户端,降低服务器处理压力[4-5]。

3  系统改进具体方案

3.1  使用application暂存试卷及改卷分析数据,降低用户与数据库之间的存取频率。

根据考试计划按试卷ID以HashMap的数据结构将试卷及其改卷分析数据在考试前从书库中获取并存储到applcation中。学生开启考试不再从数据库中获取试卷数据。这样打开试卷的时间复杂度就从原来的O(m),变为了O(1)。当学生提交试卷时,试卷在服务器上进行算分统计处理,也不需要再从数据库中提取包括维度因子、程度区间等试卷改卷分析数据,从而解决了开考和提交试卷两个阶段的高并发用户的高负荷数据库操作。

3.2  基于Js技术实现客户端的试卷生成,使用客户端分担服务器计算负荷

学生测评试卷在登录后,从application中获取测评试题数据并转换为json数据。客户端通过Js对json数据的解析和拼接,在html页面中完成试卷渲染。从而将原本该由服务器实现的试卷生成和加载在客户端进行实现。

3.3  分时实现试卷答题结果的数据库保存

使用分时定时方式解决因考试时间结束时高并发的试卷提交,每套试卷上百道答题结果的数据库保存导致服务器及数据库高负荷引发瘫痪的风险。方法在客户端使用Js及随机数,让每个考试用户在随机的1的2分钟的时长内自动对当前答题结果进行数据库传输和提交操作[6-7]。传输内容需做增量处理,避免试卷答题结果的数据库存储的无效重复操作。为实现增量处理。

3.4  基于session、数据库结合的双重考试过程安全性保障

首先,考试开始后每个用户会将application中的试卷试题数据与用户ID共同生成一份试卷答题数据结构存储与session中。JS会根据控件的修改状态改变设置每道题的修改状态,在3中定时试卷答案保存时会首先重新设置session中每道题的修改状态,从而保证3中的试卷答题结果的数据保存只会采用增量保存。同时由于session的销毁拥有一个周期,因此如果学生用户失手关闭了当前测评页面,使用session能快速将页面还原到关闭之前的状态。

而如果用户超过session生存周期或更换浏览器甚至客户端主机,在检测不到session中的用户试卷答题结果时,系统将请求数据库获取用户最近一次定时保存的答题结果数据,并与application中的试卷信息重新还原回最近一次试卷及其答题状态。从而保证测评系统考试过程安全性[8-9]。

3.5  基于多线程和线程池的改卷算法过程设计

在学生交卷时,使用多线程方式对答题结果的数据库保存和改卷算分及结果分析进行了分段同步/异步相结合的处理方式。其中答题结构的数据库保存采用同步处理方式,页面需等待保存完成后才能返回(由于前期的答题结果的定时增量提交保存算法设计,同步处理通常所需耗时很短)。试卷的改卷算分处理则在服务器中启动一个线程来实施异步处理。由于application中存储有试卷改卷算分所需的数据,因此改卷算分不再需要与数据库发生获取数据操作。仅当处理得出结果时才往数据库进行结果保存操作。

高并发的试卷算分线程统一由线程池进行管理,初始化线程池,保证服务器能拥有对试卷答题结果保存的优先处理能力。确保答题结果的安全性和用户提交操作的实时响应。在服务器资源被释放后,才提高改卷算法线程数。同步与异步相结合,运用线程池管理高并发线程,通过延长服务器处理时间,既提高了用户交卷的响应速度,同时又保证了系统的稳定性、可靠性及安全性[10]。

在算法设计中的多线程设计中,我方还增加了对于线程数量及其状态的实时监控设计,方便了管理端对改卷线程处理信息的监控管理。

从测评系统改进后的压力和响应时间测试结果来看,由于取卷不再需要向数据库获取试卷试题数据,同时试卷的内容的加载和试卷页面渲染都放在客户端,因此取卷业务的响应时间不再受到高并发的考试启动请求的影响,2~3秒的响应时间在用户体验能够接受的范围。而考试结束时的交卷业务,由于服务器采用了分段进行的试卷答题结果数据库保存的同步操作和试卷改卷算法的异步多线程处理。在极端情况下(该情况为1分钟以内并发交卷,此时试卷还没有进行过任何一次的定时试卷答题结果的数据库提交存储),试卷交卷均能在5秒以内完成保存,并结束交卷。可以预测的是,在正常考试情况下,系统交卷操作能控制在1秒内完成。给予考试人员良好的使用体验。

4  结论

采用基于平摊服务器压力,分时业务处理的在线测评系统性能优化设计及改进方法不仅取决于对考试业务过程与算法的优化设计,更取决于现代Web技术的发展,这里包括线程池、JS、ajax、json数据交互技术、甚至基于它的控件渲染技术。而随着分布式计算机、云计算的应用加入,系统能承受的并发数和系统可靠性还将具有极大的提高空间。

参考文献

[1]徐嘉. 分布式计算机应用水平考试系统设计与实现[J]. 软件工程, 2020, 23(2): 50-52+46.

[2]铁治欣, 林永兴, 冉宇瑶. 基于B/S架构的C語言在线考试系统设计与实现[J]. 软件导刊, 2019, 18(10): 103-106+110.

[3]陈尚书, 文斌. 移动端在线考试系统设计与实现[J]. 软件导刊, 2019, 18(5): 117-121.

[4]肖刚. 基于B/S结构的考试系统性能优化[J]. 电子设计工程, 2018, 26(22): 160-163+168.

[5]熊宗杨, 薛学斌, 王欣, 等. 基于过程化考核的在线考试系统的研究与实现[J]. 重庆师范大学学报(自然科学版), 2018, 35(6): 75-81.

[6]闫中威, 孙大嵬. B/S模式在线考试系统性能优化及实现[J]. 计算机系统应用, 2016, 25(10): 81-85.

[7]许永达. 基于线程池的高并发访问考试系统设计[J]. 计算机与现代化, 2013(3): 232-234+238.

[8]张晶, 林鹏. 使用负载均衡模式优化B/S架构在线考试系统[J]. 科技风, 2012(7): 18.

[9]陈德录, 刘锋. 基于B/S的网络考试系统高并发性能优化研究与实现[J]. 电脑知识与技术, 2010, 6(14): 3658-3659.

[10]徐春成. 基于C/S模式下的计算机课程考试系统开发研究[J]. 软件, 2016, 37(8): 62-64.

猜你喜欢

性能优化
SQL Server数据库性能优化的几点分析
基于SQL数据库的性能优化的探讨