疫情期间“停课不停教,停课不停学”,线上开课第一天,浙江大学网上开课平台访问量即突破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. Dubbo(一)——

    https://www.cnblogs.com/ideal-20/p/14095919.html#_label24 https://segmentfault.com/a/119000001989672 ...

  2. C# 给PPT中的图表添加趋势线

    本文内容分享通过C#程序代码给PPT文档中的图表添加数据趋势线的方法. 支持趋势线的图表类型包括二维面积图.条形图.柱形图.柱形图.股价图.xy (散点图) 和气泡图中:不能向三维.堆积.雷达图.饼图 ...

  3. GoLang设计模式06 - 对象池模式

    这次介绍最后一个创建型模式--对象池模式.顾名思义,对象池模式就是预先初始化创建好多个对象,并将之保存在一个池子里.当需要的时候,客户端就可以从池子里申请一个对象使用,使用完以后再将之放回到池子里.池 ...

  4. Toast控件

    ------------恢复内容开始------------ 四种常见的App弹窗设计:Toast.Dialog.Actionbar 和 Snackbar 弹窗又称为对话框,是App与用户进行交互的常 ...

  5. AOP快速入门

    一.概念 AOP面向切面编程,是函数式编程的延申,是对OOP的补充: 代理模式:拦截增强作用,增强功能: 1.java继承,纵向共性抽取, 2.横向切面AOP织入增强代码方式 二.原理是通过代理机制, ...

  6. HTTP快速入门

    一.tomcat端口号设置为80,访问时候可以不加:http协议1.1版本可以复用连接,请求结束后会稍微等会: 二. 表单,get方式提交: 三.user-agent告诉服务器是哪个浏览器,代码中解决 ...

  7. MySQL数据库初体验

    一.数据库的基本概念1.数据(Data) 描述事物的符号记录 包括数字,文字,图形,图像,声音,档案记录等 以"记录"形式按统一的格式进行存储 2.表 将不同的记录组织在一起 用来 ...

  8. 【Git】给不同目录配置不同的用户名和邮箱

    场景 使用 git 时,对于公司项目和个人项目想用不同的用户名和邮箱提交,简单的解决方式就是对 git 仓库单独配置 user.name 和 user.email: 直接修改当前仓库的 .git/co ...

  9. 关于 CLAHE 的理解及实现

    CLAHE CLAHE 是一种非常有效的直方图均衡算法, 目前网上已经有很多文章进行了说明, 这里说一下自己的理解. CLAHE是怎么来的 直方图均衡是一种简单快速的图像增强方法, 其原理和实现过程以 ...

  10. PHP中的文件对比扩展

    文件对比这个扩展现在用得比较少,因为大部分情况下我们都在使用一些代码管理工具,比如 Git 或者 Svn 之类的,其实它的作用就非常类似这类工具,另外还有一个非常常用的 Beyond Compare ...