运维编排场景系列----下载JVM堆栈到OSS

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 场景介绍 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。

场景介绍

jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。在实际运行中,如果每次 dump都指向同一个问题,我们就可以确定问题的典型性。 此时我们需要把dump下载后做分析,本文主要介绍通过OOS下载JVM堆栈到OSS。

解决方案

我们准备一台已安装JAVA和JETTY的ECS实例。远程连接进入管理终端。启动Jetty。查看JAVA进程。
1

登录OOS控制台。如果您之前从未开通过OOS服务,请点击“立即开通”按钮,即可一键开通。OOS运维编排是安全免费的服务,请放心开通。
2

开通后进入运维编排界面,点击自定义模板,点击创建模板按钮。
3

在创建模板页面Yaml栏中粘贴以下模板。

FormatVersion: OOS-2019-06-01
Dsacription: Download JVM dump to OSS.
Parameters:
  pid:
    Description: The ID of Process.
    Type: String
  jstackUrl:
    Description: Complete path of the jstack in linux instance.
    Type: String
  outputFile:
    Description: Complete path of the output file in linux instance.
    Type: String
  instanceId:
    Description: The ID of ECS Instance.
    Type: String
    MaxLength: 30
    MinLength: 1
  instanceRole:
    Description: The ramRole attached on the instance.
    Type: String
  destUrl:
    Description: Target directory for file copy in OSS.
    Type: String
  OOSAssumeRole:
    Description: The RAM role to be assumed by OOS.
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: runcommnd
  Action: ACS::ECS::RunCommand
  Properties:
    commandContent: '{{ jstackUrl }}/jstack -l {{ pid }} > {{ outputFile }}'
    instanceId: '{{ instanceId }}'
    commandType: RunShellScript
- Name: copyInstanceFileToOSS
  Action: ACS::ECS::CopyLinuxInstanceFileToOSS
  Properties:
    instanceId: "{{ instanceId }}"
    instanceRole: "{{ instanceRole }}"
    srcUrl: "{{ outputFile }}"
    destUrl: "{{ destUrl }}"
  Outputs:
    result:
      Type: String
      ValueSelector: result
Outputs:
  result:
    Type: String
    Value: "{{ copyInstanceFileToOSS.result }}"

输入模板名称,点击创建模板。
4

在自定义模板页面找到刚创建的模板,点击创建执行,选择自动执行,点击下一步。
5

参数设置页面需要输入以下参数:
6

参数说明:

  • pid: java进程ID
  • jstackUrl:jstack的路径
  • outputFile: 堆栈在实例中输出的文件的完整路径
  • instanceId:实例ID
  • instanceRole:挂载到实例的RAMRole名称
  • destUrl:OSS中存入堆栈的路径

确认参数无误后点击创建执行。在执行详情页面可以看到模板执行的详细过程。
7

执行完成后在OSS中查看堆栈文件。
8

堆栈文件部分内容如下:
9

欢迎使用OOS

OOS客户支持钉钉群:23330931
OOS管理控制台的链接
OOS帮助文档的链接

系列文章

主题文章

阿里云重磅发布云上自动化利器——运维编排OOS

最佳实践

玩转运维编排服务的权限:Assume Role+Pass Role

场景系列

运维编排场景系列----更新ECS镜像
运维编排场景系列-----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组
运维编排场景系列----检测MFA功能状态
阿里云运维编排新功能:一键批量克隆ECS
运维编排场景系列-----每日统计多Region实例的运行状态
运维编排场景系列-----如何使用jq
运维编排场景系列----分批到机器上运行命令

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9月前
|
Arthas 监控 Java
Arthas thread(查看当前JVM的线程堆栈信息)
Arthas thread(查看当前JVM的线程堆栈信息)
1671 10
|
11月前
|
运维 监控 前端开发
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维
面对日益复杂的IT环境,高效分析监控数据并快速响应成为运维的关键挑战。本文深入探讨了DeepSeek与Zabbix结合的创新应用,包括一键式智能告警分析、Zabbix文档知识库助手及钉钉告警增强功能。通过部署指南和实用脚本,展示了如何提升故障排查效率,为运维工程师提供高效解决方案。
1078 5
|
机器学习/深度学习 人工智能 运维
|
运维 自然语言处理 开发者
作为一名运维人员,使用通义灵码个人版处理日常工作中的代码相关任务,极大地提升了我的工作效率。以下是我使用通义灵码的具体实践场景、效果和心得,以及相应的截图。
作为一名运维人员,我使用通义灵码处理日常工作中的代码任务,效率提升了30%。通义灵码帮助我快速理解复杂代码、生成准确的代码注释,并能从自然语言生成代码示例,大幅减少了代码编写和理解的时间。
434 3
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
存储 边缘计算 运维
边缘计算问题之OpenYurt 对边缘计算场景中的运维难题如何解决
边缘计算问题之OpenYurt 对边缘计算场景中的运维难题如何解决
148 1
|
分布式计算 运维 DataWorks
MaxCompute操作报错合集之用户已在DataWorks项目中,并有项目的开发和运维权限,下载数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
255 8
|
存储 弹性计算 监控
建设云上稳定性问题之为什么要在云效平台创建发布流水线并将源代码编译环节替换为从OSS下载构建部署物
建设云上稳定性问题之为什么要在云效平台创建发布流水线并将源代码编译环节替换为从OSS下载构建部署物
271 2
|
运维 监控 测试技术
5个常见运维场景,用这几个Python脚本就够了!
5个常见运维场景,用这几个Python脚本就够了!
546 0
|
运维 监控 容灾
智能化运维场景分析
【7月更文挑战第12天】智能运维目标是解放运维人员,提高效率,确保业务连续性和优化资源利用。

热门文章

最新文章