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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
可观测链路 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

相关文章
|
18天前
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
1天前
|
消息中间件 监控 Kafka
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
7 0
|
25天前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
30 3
|
2月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
阿里云ACK容器服务生产级可观测体系建设实践
|
21天前
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
2月前
|
缓存 前端开发 Java
打造未来兼容的Web应用:Apache Wicket引领响应式设计的热潮
【9月更文挑战第4天】在软件开发领域,构建响应式Web应用至关重要。Apache Wicket作为一个强大的Java框架,支持响应式设计,确保应用在不同设备上均有出色体验。本文通过示例代码介绍使用Wicket的最佳实践,涵盖页面与组件模型、CSS媒体查询及自定义标记处理器的应用。同时,文章强调了优化加载时间、增强交互性和提升可访问性的重要性,帮助开发者打造高性能且美观的Web应用。
42 3
|
2月前
|
Java API Apache
从零到英雄的蜕变:如何用Apache Wicket打造你的第一个Web应用——不仅是教程,更是编程之旅的启航
【9月更文挑战第4天】学习Apache Wicket这一开源Java Web应用框架是一段激动人心的旅程。本文将指导你通过Maven搭建环境,并创建首个“Hello, World!”应用。从配置`pom.xml`到实现`HelloWorldApplication`类,再到`web.xml`的设置,一步步教你构建与部署简单网页。适合初学者快速上手,体验其简洁API与强大组件化设计的魅力。
44 1
|
3月前
|
Java Spring Apache
Spring Boot邂逅Apache Wicket:一次意想不到的完美邂逅,竟让Web开发变得如此简单?
【8月更文挑战第31天】Apache Wicket与Spring Boot的集成提供了近乎无缝的开发体验。Wicket以其简洁的API和强大的组件化设计著称,而Spring Boot则以开箱即用的便捷性赢得开发者青睐。本文将指导你如何在Spring Boot项目中引入Wicket,通过简单的步骤完成集成配置。首先,创建一个新的Spring Boot项目并在`pom.xml`中添加Wicket相关依赖。
85 0
|
3月前
|
Apache 开发者 Java
Apache Wicket揭秘:如何巧妙利用模型与表单机制,实现Web应用高效开发?
【8月更文挑战第31天】本文深入探讨了Apache Wicket的模型与表单处理机制。Wicket作为一个组件化的Java Web框架,提供了多种模型实现,如CompoundPropertyModel等,充当组件与数据间的桥梁。文章通过示例介绍了模型创建及使用方法,并详细讲解了表单组件、提交处理及验证机制,帮助开发者更好地理解如何利用Wicket构建高效、易维护的Web应用程序。
42 0
|
3月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
39 0

推荐镜像

更多