网站常见问题1分钟定位 - 如何使用阿里云ARMS诊断Java应用卡顿问题

简介:     不要慌,上面只是一张贴图。     为什么“慢”那么难查   网站卡顿、页面加载过慢是互联网应用最常见的问题之一。排查、解决这类问题通常会花费开发运维人员大量的时间,通常是因为以下三个原因: 应用链路太长,无从下手。
 
 
不要慌,上面只是一张贴图。
 
 

为什么“慢”那么难查

 
网站卡顿、页面加载过慢是互联网应用最常见的问题之一。排查、解决这类问题通常会花费开发运维人员大量的时间,通常是因为以下三个原因:
  • 应用链路太长,无从下手。
    • 从前端页面到后台网关,从Web应用服务器到后台数据库,任何一个环节的问题都有可能导致请求整体卡顿,到底是前端资源加载过慢?还是数据库出了问题?还是新发布的服务端代码有性能问题?出现问题的原因五花八门。
    • 采用“微服务”架构的应用,链路更加复杂。不同组件可能由不同的团队、人员分别维护,加剧了问题排查的难度。
  • 日志不全或质量欠佳,现场缺失。
    • 应用日志无疑是排查线上问题的神器,但出现问题的位置往往无法预期,发生了问题通常会发现日志信息不全 -- 我们不可能在每一个有可能出现问题的地方打印日志。
    • “慢”的定义偏主观,“慢”有时候往往也是偶发现象。真正要捕捉到“慢”的那一行代码,我们往往需要记录每一次调用,不放过每一行代码,但这往往代价太大。
  • 监控不足,出现问题为时已晚。
    • 业务发展快、迭代速度更快,会导致业务系统频繁修改接口、增加依赖、代码质量恶化。如果没有一个完善的监控体系,能够对应用的每一个接口的性能进行全自动的监控,对出现问题的调用进行自动的记录,等用户反馈问题再来解决,本身就已经太迟了。
 
 

使用阿里云ARMS的0埋点技术,1分钟定位“慢”问题

 
利用阿里云ARMS(应用实时监控- 链接 )的线程剖析、调用链诊断、接口监控等一系列功能,您只需要在您的应用启动脚本中增加几行探针加载逻辑( 链接 ),不需要对您的应用代码做任何改动,即可以让应用中所有“慢”调用无处可逃。
 
 

第一步:安装Java探针(如果您的应用托管于EDAS,您甚至可以跳过这一步 - 链接

  • 开通ARMS,并创建应用。
  • 下载Java探针包并解压。
  • 在Java应用启动脚本中增加 -javaagent:/{user.workspace}/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey=xxx -Darms.appId=xxx (appId和licenseKey根据页面分配的信息填写,详情可看 - 链接 )
  • 打开ARMS页面,数据开始上报,验证Java探针安装成功。
     
 
 

第二步:在应用概览中发现“慢”可疑线索。

  • 进入ARMS应用拓扑图。在应用概览中我们能够明显地看到今天系统中有“慢SQL”5次。
     
 
 

第三步:浏览并发现“慢接口”

  • 点击接口列表,我们能够一眼看到这个应用提供的所有接口以及这个接口的调用次数和耗时,当然,这些接口都是ARMS的探针自动在程序中发现的,无需做任何配置。
  • 在这些接口中,“慢”接口会被明显标注出来。我们很明显地发现了可疑的慢接口。
  • 选中左侧的调用次数最多的”慢”接口,我们可以从右侧看到这次调用明显是“慢”在数据库的调用上。
 
 
 

第四步:到底“慢在哪一行代码”? 一键定位原因!

 
  • 光看到接口的耗时还不够,我们需要精准定位“慢”到底出现在哪一行代码。
 
  • 点击“接口快照”,可以看到这个接口对应的所有接口的快照,快照是对一次调用的全链路调用的完整记录。ARMS探针将用非常小的性能损耗记录每一次调用所经过的代码及耗时,帮助您精准定位“慢”问题。
     
     
 
  • 我们点击某一个调用快照的TraceId,展开即可查看到这次调用具体“慢”在哪一行。从上图中我们可以清晰地看到,在这次耗时705毫秒的调用中,大部分的时间都消耗在了"SELECT * FROM l_employee"这次SQL调用中,这明显是一次全表扫描的操作!
 
  • 到此为止,我们已经明确地发现了系统中的一个慢调用的错误根因。并且有充分的依据来指导我们下一步的代码优化工作。我们还可以回到调用接口列表,再逐一打开列表中其他“慢”的调用,逐一解决,相信在ARMS的帮助下,您的网站从此可以远离卡顿的困扰,给用户提供更加流畅的体验。
 
 

第五步:防患于未然 -- 设置告警

 
  • 当然,您可以在ARMS的告警设置中对某一个接口或全部接口设置告警,让页面接口出现卡顿时第一时刻通知到您的运维团队。
     
 
 

快速诊断更多问题

 
  • 当然除了错误以外,网站还会出现后台抛错、页面加载失败、内存泄漏等一系列问题。利用ARMS快速解决更多网站疑难杂症,请继续关注“网站常见问题1分钟定位”系列其他文章。
 

 

相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
目录
相关文章
|
监控 Java Unix
6个Java 工具,轻松分析定位 JVM 问题 !
本文介绍了如何使用 JDK 自带工具查看和分析 JVM 的运行情况。通过编写一段测试代码(启动 10 个死循环线程,分配大量内存),结合常用工具如 `jps`、`jinfo`、`jstat`、`jstack`、`jvisualvm` 和 `jcmd` 等,详细展示了 JVM 参数配置、内存使用、线程状态及 GC 情况的监控方法。同时指出了一些常见问题,例如参数设置错误导致的内存异常,并通过实例说明了如何排查和解决。最后附上了官方文档链接,方便进一步学习。
3186 4
|
11月前
|
Arthas 监控 Java
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
Java死锁 如何定位?如何避免Java死锁?(图解+秒懂+史上最全)
|
监控 开发工具 Android开发
ARMS 用户体验监控正式发布原生鸿蒙应用 SDK
阿里云 ARMS 用户体验监控(RUM)推出了针对原生鸿蒙应用的 SDK。SDK 使用 ArkTS 语言开发,支持页面采集、资源加载采集、异常采集及自定义采集等功能,能够全面监控鸿蒙应用的表现。集成简单,只需几步即可将 SDK 接入项目中,为鸿蒙应用的开发者提供了强有力的支持。
898 125
|
搜索推荐 Java 定位技术
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
2263 20
|
存储 人工智能 JSON
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
RAG Logger 是一款专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、检索结果记录、LLM 交互记录和性能监控等功能。
745 7
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
|
人工智能 运维 监控
ARMS:端到端全链路,应用可观测再进化
ARMS是一款应用实时监控产品,致力于端到端全链路应用可观测性的提升。本次分享涵盖五大方面:1) 端到端全链路应用可观测再进化;2) 企业级监控能力与智能化运维;3) 架构升级与智能助手应用;4) 智能化数据关联提升问题排查效率;5) 应用可观测体系的构建与优化。通过茶百道和极氪汽车的实际案例,展示了ARMS在提高运维效能、快速定位问题及减少无效告警等方面的显著效果。ARMS不断探索更多可能性,为用户提供更强大的产品能力。
793 7
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
381 6
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
449 3
|
移动开发 监控 Android开发
Android & iOS 使用 ARMS 用户体验监控(RUM)的最佳实践
本文主要介绍了 ARMS 用户体验监控的基本功能特性,并介绍了在几种常见场景下的最佳实践。
1357 108
|
运维 监控 数据可视化
ARMS的微服务监控
【8月更文挑战第23天】
352 6