疫情期间“停课不停教,停课不停学”,线上开课第一天,浙江大学网上开课平台访问量即突破100 万次,访客数3万余人,最高峰达 1.1万人同时在线,发起课程直播2000余场,然而系统却未发生一次故障异常。短短29天的冲刺就完成了如此完美的性能保障任务,浙江大学究竟是如何做到的?耐心看下去!

面临挑战

浙江大学是中华人民共和国教育部直属的综合性全国重点大学,位列首批“世界一流大学和一流学科”、“211工程”、“985工程”。

2020年初,面对疫情发展的严峻形势,浙大信息技术中心临危受命,要求30天内完善保障8万师生互动、3000多门课程平稳运行的线上抗疫“第二战场”。大年初二晚上,浙大信息技术中心紧急召开保障视频会议,决定将网上开课直播方案主要依托于已有的“学在浙大”和“浙大钉”平台,可要想实现稳定的“网上开课”,还有一系列性能问题不得不解决。

1. 访客从5万到8万,系统稳定性如何保障?

“学在浙大”平台在最初推出之时,主要以校内访问为主,平台支持的用户数也只有 5 万。疫情期间为了支持全校 8 万师生的校外顺畅使用,必须将关键的业务系统由校园网都迁移到校外云端,然而系统间微服务调用复杂,关键业务迁移极易导致系统出现故障,比如:两个环境的硬件差异,配置差异,网络环境差异,任何一个细小环节出现问题,都有可能导致系统不可用。

2.系统打开速度慢2.5倍,问题出在哪里?

日常教学中,钉钉工作台承载了浙大所有移动端的业务应用,上万人教职工均采用钉钉工作台,可它打开需要5s+的时间(用户最满意的打开网页时间是2s以下),这无疑将对网上教学活动造成巨大负面影响,然而问题到底出现在哪些节点?浙大信息中心急需快速定位并优化这些问题节点。

3. 400台机器是增还是减,如何合理配置?

浙大信息中心的机房,目前总机器数为400+服务器,可对各个网站现有机器能支撑多少访问量,是否可以下线部分机器,目前无可量化的办法。新网站在申请服务器的时候,也面临难以评估机器数量的问题,究竟该如何合理配置服务器资源呢?

4.几十个供应商,完成性能保障任务可能么?

浙大拥有众多功能类应用,大部分采用第三方外购的方式,不同应用交织,整体系统架构错综复杂,链路节点数量庞大,一条核心链路就涉及多家供应商,发现性能故障后,如何快速精准定位链路故障节点是一大难点。生产环境全链路压测是性能保障的最佳选择,该技术主要通过2种方式来实现,一是改造系统中间件,二是植入探针。若采取改造中间件的方式就需要协调各方供应商的开发资源来进行系统代码改造,工程量大,耗时长;若采取植入探针方式,那多方应用与探针的适配性也是需要考虑的问题。

解决方案

为了协助浙大落实“停课不停教,停课不停学”,数列科技采取了一系列的保障措施与解决方案,其中最重要的就是对核心链路进行生产环境的全链路压测与监控。

1.生产环境真实模拟,发现优化性能问题50多个

系统迁移工作完成后,我们对照业务流程图,对整个业务系统进行了全链路压测和性能链路追踪分析,这次压测涉及到了钉钉工作台、统一登录、学在浙大、智学课堂、应用整合系统、OA系统、流程平台等等。

秉持一样的环境、一样的场景、一样的量级三大原则,我们在浙大师生使用的真实系统中,还原真实教学场景中的操作流程,模拟真实数量的师生人数进行压测,通过压测了解系统的并发量、可能存在的系统缺陷,进而升级改造,逐步推进系统的健康稳定。

最终结果如下:共计提前发现并优化50+性能问题,其中【统一登录系统】12个,【钉钉工作台】11个,【学在浙大】26个……

2.精准定位问题节点,打开速度从5秒变为1秒

多轮压测之后,我们提前发现了一系列问题,之前一直困扰浙大信息中心团队的“登录和加载慢问题”,也很快找到原因并得以解决。

【统一登录系统】需要多次重定向才能完成获取认证信息完成登录,因此导致登录请求需要重复认证,进入系统的时间长;

解决方案:降低多次重复重定向认证,减少重定向次数,同时本地缓存认证信息加快认证速度。

【钉钉工作台】静态资源加载缓慢耗时长、css/js文件未压缩,资源比较大使得钉钉工作台进入缓慢。

解决方案:静态资源采用CDN分发加速的同时nginx开启gzip压缩,还有就是css/js静态文件使用压缩版文件。

最终通过性能定位及持续跟踪优化后,页面响应时间从5秒优化到了1秒,系统运行和用户体验变得更加流畅。

3.优化资源配置,节约20%+服务器资源

Takin压测输出的压测报告为技术人员优化服务器配置提供了量化依据,根据压测数据对各个应用、单个机器、集群服务器进行准确的容量水平评估,给出服务器配置建议,增加部分服务器用以支援数据库链接、门户资讯等重要服务,在保障系统稳定运行的同时缩减其他非核心链路的服务器资源,避免过度配置,最终节约出20%的服务器资源,降低了几十万的硬件成本。

4.两大产品助力,协同供应商高效完成任务

Takin采用的是agent无侵入式部署,各个应用系统的供应商基本不需要人员与时间投入来改造系统代码,且经过多年实践积累LinkAgent目前已兼容11种大类、99个大版本、356个小版本中间件,囊括了市面上的主流中间件,基本可以满足多供应商系统的部署需求,省时又省力。

智能巡检E2E助力“网上浙大”教育系统建立可视化的性能监控体系,链路监控可以直接展现整个链路中存在性能瓶颈的微服务架构节点,找出节点所在的应用即可定责并快速协同供应商进行整改优化。

2020年,2月24日早上8:00,浙江大学春学期第一堂课按照原教学计划全部100%顺利开课。24日当天,据统计共开课700余门,涉及近千个教学班。统一身份认证通过学在浙大和浙大钉分别认证了541986和279825次。学在浙大平台当日总访问量突破100万次,在线最高访问量11万余次,访客数近3万余人。整个疫情期间,教学系统运行稳定。

浙大信息中心的实践证明,生产环境全链路压测与监控体系的引入,不仅解决了系统链路的隐藏风险,提升了系统性能的稳定性,而且建立起了一套化被动解决故障为主动发现解决问题的IT性能评估体系,相信可以为以后浙大网上服务系统的性能完善带来不小的帮助。

如果你也对生产环境全链路压测技术感兴趣,Takin的核心功能已正式开源,欢迎使用。

详细了解Takin: https://news.shulie.io/?p=3024

加小树入群交流

短短 29 天,应对高峰 100W+ 访问,看浙大如何交出满分答卷的更多相关文章

  1. 如何用python做出老师看了都给满分的GUI学生管理系统毕设

    序 言 哈喽大家好鸭!我是小熊猫 最近有什么有趣的事情发生吗?快来说给我听听( •̀ ω •́ )✧表弟大学快毕业了,学了一个学期Python居然还不会写学生管理系统,真的给我丢脸啊,教他又不肯学,还 ...

  2. 你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对?

    你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对? 你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算 ...

  3. 假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?

    假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?如何计算? 1.PV是什么:PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个 ...

  4. HTTP协议详解以及URL具体访问过程

    1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从 ...

  5. 《大型网站系统与JAVA中间件实践》读书笔记-数据访问层

    数据访问层 5.1.2数据库垂直/水平拆分的困难 随着网站业务的快速发展,数据量和访问量不断上升,数据库的压力越来越大. 更换更好的硬件(Scale Up)是一种解决方案,而且在我们能付得起硬件费用并 ...

  6. tftp 限制ip 限制ip段 或者多个ip段访问

    1 限制单个ip访问 tftp 配置tftp信息 vi /etc/xinetd.d/tftp 在 service tftp配置信息中添加  only_form =ip 重启 service xinet ...

  7. 在Linux系统中如何设置APACHE服务器里的后台页面只允许某个IP地址访问

    补充资料 本网络中使用LINUX服务器,web服务器是由APACHE搭建,IP地址为192.168.1.5,后台页面为/admin/login.jsp . 如何设置后台页面LOGIN.JSP只允许19 ...

  8. SqlBulkCopy 插入100W条数据时 属性BatchSize的作用

    (1)100W条insert语句在一个连接内一句一句加 花了01:17:19.0542805 (2) SqlBulkCopy 插入100W条数据 设置BatchSize=500 耗时:00:03:29 ...

  9. apache本地和局域网访问设置

    apache本地和局域网访问设置 最近做项目需要同事ajax发项目给我,因为是测试环境,所以需要能访问我的服务器.我服务器直接用的wampserver.因为没有接触过,所以百度了一下,都是没有成功,后 ...

随机推荐

  1. 【Python从入门到精通】(二十五)Python多进程的使用

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本篇重点介绍Python多进程的使用,读者朋友们可以将多进程和多线程两者做一个对比学习. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题 ...

  2. 除PerfDog之外,还有什么性能测试工具。

    除PerfDog之外,还有什么性能测试工具. 高通的Snapdragon Profiler 下载地址:https://developer.qualcomm.com/software/snapdrago ...

  3. Centos下Yum安装PHP7.0

    默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们 ...

  4. find用法 以及和exec xargs 的组合使用

    1.查找当前目录下所有的txt的文件 [root@master1 ~]# find . -name "*.txt" -type f ./a.txt ./b.txt 2.exec 结 ...

  5. 微信小程序+腾讯云直播的实时音视频实战笔记

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. 免费iApp后台-云接口

    免费稳定,UI易懂简洁,功能强大 应用名称:云接口 应用版本:1.5.9 应用大小:3.55 MB 适用平台:Android(安卓) 应用用处:详情请下载软件 软件安全无毒 更新内容: 1.支付宝当面 ...

  7. 使用 VSCode 开发调试 STM32 单片机尝试

    使用 VSCode 开发调试 STM32 单片机尝试 本文记录基于 Windows + DAP-Link 开发 STM32F103C8T6 的实践过程,其他操作系统或芯片应该也只是大同小异的问题. 注 ...

  8. linux停止nginx服务 未成功

    在上线新功能的时候,需要将服务器停掉,防止在更新过程中有用户进行操作额外的数据. 1:查看nginx主进程: ps -ef | grep nginx 这里root 后面的数字表示:主进程号nginx后 ...

  9. Java面向对象系列(4)- 类与对象的创建

    类与对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是不能代表某一个具体的事物 动物.植物.手机-- Person类.Pet类.Car类等,这些类都是用来描述/定义某一类具体的事 ...

  10. Navicat15 最新版本破解版操作步骤

    1.关于Navicat 15的安装版本以及破解机下载 分享的网盘连接:https://pan.baidu.com/s/12DaG0TmS9hXlYmJ_T5ytz2rA 提取码:7cg6 2.安装Na ...