疫情期间 “停课不停教,停课不停学”,线上开课第一天,浙江大学网上开课平台访问量即突破 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
加小树入群交流