笔记|试分析培正强智教务系统选课卡顿的原因

前言 众所周知,每当大流量访问和点击时,学校的教务系统总会有各种各样的问题,就如在抢课时,就会出现大面积的卡顿、数据错误、选课失败等等问题。今天,试着分析一下为什么会出现这样的问题。
分析web网页的工作流程 在如今的web开发当中,一般都会去遵循MVC三层架构的形式来达到更高的开发效率。
当客户端发出请求给服务器(如点击查询、选课、改信息、退选等操作),请求数据首先会到表现层(Controller),然后业务层(Service)就会根据表现层的数据让持久层(Dao)去进行增删改查(相当于查询、选课、改信息、退选等操作),然后将信息返回给业务层,最后通过表现层来将结果告知游览器,并做页面展示。
笔记|试分析培正强智教务系统选课卡顿的原因
文章图片

当服务器出现问题(访问人数太多、带宽不足、服务器卡爆),就会无法保证游览器所有请求都能正确处理,也无法保证服务器的响应能够正确的发给游览器,从而就会出现各种各样的问题。
就好比一个叫张三的人,让他去煮饭洗菜洗碗他也许还能够忙的过来,如果增加任务量,让张三一个人去某酒店的后厨完成洗菜炒菜洗碗送餐捡餐等操作,显然张三一个人是忙不过来的,酒店客户的请求无法作出正确响应,客户就会抱怨酒店服务质量太差。
就如我们选课时出现的:访问网页失败、掉Session(需要重新登录)、选课失败、页面异常等,我们就会出现各种抱怨。
笔记|试分析培正强智教务系统选课卡顿的原因
文章图片

笔记|试分析培正强智教务系统选课卡顿的原因
文章图片

笔记|试分析培正强智教务系统选课卡顿的原因
文章图片

笔记|试分析培正强智教务系统选课卡顿的原因
文章图片

分析强智系统 通过登录教务系统,发现我们的系统是由jsp开发的。
首先我们来看下百度百科对JSP简介:
JSP(全称JavaServer Pages)是由Sun公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

JSP作为一款基于java的网页动态技术,其本质还是Servlet,而Servlet是java众多类中的其中一个。
笔记|试分析培正强智教务系统选课卡顿的原因
文章图片

使用jsp的好处有很多,就如jsp继承了java的一次编写到处运行一样,具有强大的功能性,但其缺点也很明显,所以我们来讲一下jsp缺点:
1.JSP在编写的时候可以使用网页代码(HTML/CSS/JS),也可以嵌入java代码,虽然在页面展示时可以用el和jstl直接做数据交互,但是这就会造成前端和后端的代码的混淆,毕竟现在都讲究前后的分离。
当数据交互时的动态资源和网页静态资源全部交互在一起时,代码维护会比较困难,页面的耦合性大,服务器的压力会更大。典型的特点就是,服务器不行时,前端页面也跟着完蛋,也就是说,用户体验是让人怀疑的。
2.jsp是基于java的脚本语言,大多数中小企业都是使用Apache的Tomcat服务器,在处理高并发时效果是不如Nginx这样的服务器的。
特别是在处理高并发的情况下,tomcat更容易造成崩溃,当连接数过多的时候就会出现服务器僵化的现象了。当抢课的时候,可能是几千上万人的同时点击,服务器的压力可想而知,后面进不来的人,后面是很难挤进去的。。
所以,较大的企业往往要有更高级选课的算法方案、要对数据库进行性能优化,使用高并发redis来增加代码质量,增加用户的体验。
3.jsp页面内容太多,既有静态又有动态java代码,页面响应慢,从底层原理来看还是要生成静态html,所以效率也慢。
4.对比jsp,html页面可以使用ajax异步交互的技术,在不加载整个页面资源的的情况下就能做到数据交互,这点是jsp不足的地方。
所以,在我们分析了web网页的工作原理和学校教务系统的技术类型后,我们就可以简单知道,为什么学校教务系统在抢课的时候经常崩溃了。
换个好点的服务器可以吗? 答案是可以的,学校能够更换带宽更大、配置更好的服务器、增加服务器数量、增加维护服务器机房的管理人员的话,这种情况是可以有明显改善的,所谓底大一级压死人,显然在这里也是可以的。
毕竟我们可以从上面的例子可以知道,只要酒店给张三增派更多的人手,就可以保持整个酒店的后厨运转了。
实际上我们从刚刚的分析来看主要问题还是出于服务器的性能、技术的选用和优化,准确的说还要正确的管理人员和管理机制、有更高明的算法机制和强大的技术支持来保障高并发的使用,那么从服务器层面来解决也是有效途径之一。
但是,从学校的管理层面来说,想要实现这样真的有那么容易吗?
由于我没有去过学校的服务器机房、不知道学校服务器具体的数量和性能,所以无法准确的判断,但是至少从日常使用来看,我们的教务系统是毫无问题的,能够基本满足需求,甚至在选课期间,大致上还是能够满足多数人的选课需求,对于大多数人来说,想要的课虽然选不上,课呢还是能上,资源是有限的嘛。所以从决策者来说,当然是不能够有太多的资源浪费,毕竟选课也就一学期一次。
这里再举一次酒店的例子,正如上述所说的,如果酒店的就餐人数和营业规模没有达到要增派更多的人手时候,就会保持服务人员数量不变。如现在有一个酒店的运营规模大约只要100人就可以满足日常的需求,就不会去浪费资金去招200人、300人,这也就造成了在节假日等热闹时期,除去场地空间限制问题等其他问题,酒店整体运转是非常繁忙的,客户因为等餐时间变长等诸多问题也因而变得不耐烦,但毕竟这种时期这种情况发生的比较少,所以从企业来说基本不会大规模聘请人手,最多也只是临时聘请兼职罢了。
如何更好的选课? 官方推荐:认准360游览器(兼容模式)----×
个人推荐:使用chrome、firefox、ie等多种游览器混合的,以chrome为核心,firefor、ie游览器辅助的模式。----√
选课前提前几分钟就进入登录教务系统、多开几个页面,占得先机抢先进入服务器,免得被服务器的访问限制阻挡在外。
当教务系统进不去的的时候可以多开上面几个游览器,重复刷新,必要的时候删除教务系统网站的cookie。
最后 通常我们评估一个网站的性能好坏,往往是站在用户的角度来考虑。当用户通过游览器发出请求,游览器就会获得用户用户的意图并将请求发送给游览器,服务器接到请求后作出相应的操作并将结果响应给游览器,游览器就会根据服务器响应将结果告知用户。
所以我们不难发现,选课期间的漫长等待主要由三部分组成:

  • 数据在网络上的传输时间
  • 站点服务器的响应时间
  • 游览器本地计算和渲染时间
当服务器将数据返回给游览器时,受并发策略、页面大小、布局,样式渲染方式、脚本的解释能力等因素影响,游览器并不是直接就能告知用户结果的,而是首先将数据合理地处理、将之转换为人们能看得懂的数据,这样我们才能够看得懂具体的操作。
【笔记|试分析培正强智教务系统选课卡顿的原因】不同游览器的能力、处理策略有所不同,这也是我们为什么要选择不同的游览器的原因。

    推荐阅读