文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

云应用容器的向左监控方法

2024-11-30 10:01

关注

向左移动(Shift-left)是一种软件开发和运维的方法,强调在软件开发生命周期的早期进行测试、监控和自动化。向左移动的目标是在问题出现之前及时发现并迅速解决,以防止问题的发生。

当您早期识别到可扩展性问题或错误时,解决起来更快、更具成本效益。将低效代码转移到云容器中可能非常昂贵,因为它可能会激活自动扩展功能,增加您的月度费用。此外,在您能够识别、隔离和修复问题之前,您将处于紧急状态。

问题陈述

我想给您演示一个案例,我们成功地避免了一个潜在的应用程序问题,在生产环境中可能会造成重大影响。

2022年我们的Kubernetes报告提供了关于团队如何利用Kubernetes、AI中的K8s、集群可观测性方面的见解等内容。

我正在审查最近应用程序更改后的UAT基础架构的性能报告。这是一个使用MariaDB作为后端、运行在Apache反向代理和AWS应用负载均衡器后面的Spring Boot微服务。新功能成功集成,并且通过了所有UAT测试用例。然而,我注意到MariaDB性能仪表板中的性能图表与部署前的模式有所偏离。

以下是事件的时间轴。

8月6日14:13,应用程序使用包含嵌入式Tomcat的新Spring Boot jar文件重新启动。

52,MariaDB的查询处理速率从每秒0.1增加到88次查询/秒,然后增加到301次查询/秒。

此外,系统CPU利用率从1%提高到6%。

最后,JVM在G1 Young Generation Garbage Collection上花费的时间从0%增加到0.1%,并保持在这个水平。

该应用程序在UAT阶段异常地发出300次查询/秒,远远超出了其设计要求。新功能导致数据库连接增加,因此查询量显著增加。然而,监控仪表板显示,在部署新版本之前,问题措施是正常的。

解决方案

这是一个使用JPA查询MariaDB的Spring Boot应用程序。该应用程序的设计是在两个容器上运行以实现最小负载,但可以扩展到十个容器。

如果一个单独的容器可以生成每秒300次查询,那么如果所有十个容器都运行,它可以处理每秒3000次查询吗?数据库能否拥有足够的连接来满足应用程序其他部分的需求?

我们别无选择,只能返回开发人员的工作台,检查Git中的更改。

新的更改将从一个表中获取少量记录并进行处理。这是我们在服务类中观察到的代码。

List findAll = this.xRepository.findAll();

不,使用Spring的CrudRepository的findAll()方法而没有分页是低效的。分页有助于减少从数据库检索数据所需的时间,通过限制获取的数据量。这是我们主要的关系型数据库(RDBMS)教育所教导我们的。此外,分页有助于保持内存使用低,以防止应用程序由于数据过载而崩溃,并减少Java虚拟机的垃圾回收工作量,正如前面问题陈述中提到的。

这个测试是在一个容器中使用2000条记录进行的。如果这段代码被部署到生产环境中,其中每个容器有约20万条记录,那么可能会给团队带来很大的压力和忧虑。

应用程序在将方法添加WHERE子句后重新构建。

List findAll =
this.xRepository.findAllByY(Y);

恢复了正常运行。每秒查询数从300降至30,垃圾收集的工作量恢复到原始水平。此外,系统的CPU使用率降低。

学习和总结

任何从事站点可靠性工程(SRE)工作的人都会理解这个发现的重要性。我们能够在不提高严重性1级别的情况下采取行动。如果这个有缺陷的软件包部署到生产环境中,可能会触发客户的自动扩展阈值,即使没有额外的用户负载,也会启动新的容器。

这个故事有三个主要的要点。

首先,最好从一开始就启用一个可观测性解决方案,因为它可以提供事件的历史记录,用于识别潜在问题。如果没有这个历史记录,我可能不会认真对待0.1%的垃圾回收百分比和6%的CPU消耗,代码可能会发布到生产环境中,造成灾难性的后果。扩大监控解决方案的范围到UAT服务器有助于团队在问题发生前识别潜在根本原因并防止问题发生。

其次,在测试过程中应存在与性能相关的测试用例,并由具有可观测性经验的人员进行审查。这将确保对代码的功能和性能进行测试。

第三,云原生的性能跟踪技术对于接收有关高利用率、可用性等方面的警报非常有用。为了实现可观测性,您可能需要准备合适的工具和专业知识。祝编码愉快!

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯