带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(4)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(4)

带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(3)https://developer.aliyun.com/article/1377521


Profiling常见技术包括perf、Async-profiler、JFR。以CPU的Profiling火焰图来说,比如我们对一个线程每10毫秒拉一把线程的栈,1秒钟就能拉到100个栈。 即Thread.run调了一个StandardHost Valve.invoke,最后调了一个PrepareStatment.executeQuery。右边的100个栈和左边唯一的区别是,下面调的是Thread.sleep的方法。

 

然后我们把这200个栈聚合起来就可以得到,Thread.run跑了两秒,这两秒都在跑StandardHost Valve.invoke这个方法。这方法的两秒分别分布在PrepareStatment.executeQuery的一秒和Thread.sleep的一秒,这就是火焰图聚合的原理。

 

此外,我们还有内存的火焰图。它的触发是在我们每次分配内存的时候,会处罚我们拉一次线程当前的栈。还有网络IO事件也都可以打出火焰图来。

 

image.png

 

我们考虑把Profiling的数据和Trace上下文、Metrics维度、业务上下文做一个关联,来保证我们可以通过Profiling得到更多的数据,比如我们和traceId、spanId、接口名、userId关联。

 

我们和traceId关联了之后,就相当于我们拿到了某一次调用的CPU占用量、内存开销。而且还能定位到当前Trace的埋点,没有覆盖的那些方法,我们也能看到它到底占用了多少耗时。和接口名/userId关联后,可以看到这个应用不同的接口占用了多少资源。比如这个接口占了多少CPU占了多少内存打开了多少IO等等数据。有了这些数据,就可以驱动我们的开发区对整个应用进行调优。

 

上图下侧是我们产品里的一张图,它是和traceId关联了之后的结果。可以看到,一次调用花了两秒,一秒花在了socket的IO上,一秒花在了Thread.sleep上。像socket的IO和Thread.sleep,我们一般都不会通过Trace对它做埋点,因为这种数据在Trace里是看不到的。我们通过火焰图的关联,可以看到一次调用更细节的东西。



带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(5)https://developer.aliyun.com/article/1377519

相关文章
|
6天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
4天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
6天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
5天前
|
Cloud Native API 持续交付
云原生之旅:从容器到微服务的演进之路
【10月更文挑战第39天】在这篇文章中,我们将一起探索云原生技术的奥秘。通过浅显易懂的语言和生动的比喻,我们将了解云原生技术如何改变软件开发的世界。文章将带领读者从容器的基本概念出发,逐步深入到微服务架构的实践,揭示这些技术如何助力现代应用的快速迭代与可靠部署。准备好,让我们启程进入云原生的精彩世界吧!
|
7天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
14天前
|
Kubernetes Cloud Native 微服务
云原生之旅:从容器到微服务
【10月更文挑战第29天】在这篇文章中,我们将一起探索云原生的奥秘。云原生不仅仅是一种技术,更是一种文化和方法论。我们将从容器技术开始,逐步深入到微服务架构,最后探讨如何在云平台上实现高效的服务部署和管理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的技能。让我们一起踏上这段激动人心的云原生之旅吧!
|
15天前
|
运维 Kubernetes Cloud Native
云原生之旅:容器化与微服务的融合
【10月更文挑战第28天】 在数字化转型的浪潮中,云原生技术如星辰般璀璨,引领着企业IT架构的未来。本文将带你穿梭于云原生的世界,探索容器化技术和微服务架构如何携手共舞,打造灵活、高效的应用部署和运维模式。我们将通过实际代码示例,揭示这股力量背后的奥秘,并展现它们是如何为现代软件开发带来革新。准备好了吗?让我们启航,驶向云原生技术的深海。
|
16天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
47 4
|
15天前
|
Cloud Native 持续交付 云计算
云原生入门指南:从容器到微服务
【10月更文挑战第28天】在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本篇文章将带你了解云原生的基本概念,探索它如何通过容器化、微服务架构以及持续集成和持续部署(CI/CD)的实践来提升应用的可伸缩性、灵活性和可靠性。你将学习到如何利用这些技术构建和部署在云端高效运行的应用,并理解它们对DevOps文化的贡献。
37 2
|
17天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
51 3

推荐镜像

更多