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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 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
运维编排场景系列----分批到机器上运行命令

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
运维 自然语言处理 开发者
作为一名运维人员,使用通义灵码个人版处理日常工作中的代码相关任务,极大地提升了我的工作效率。以下是我使用通义灵码的具体实践场景、效果和心得,以及相应的截图。
作为一名运维人员,我使用通义灵码处理日常工作中的代码任务,效率提升了30%。通义灵码帮助我快速理解复杂代码、生成准确的代码注释,并能从自然语言生成代码示例,大幅减少了代码编写和理解的时间。
79 3
|
3月前
|
机器学习/深度学习 人工智能 运维
|
4月前
|
存储 边缘计算 运维
边缘计算问题之OpenYurt 对边缘计算场景中的运维难题如何解决
边缘计算问题之OpenYurt 对边缘计算场景中的运维难题如何解决
42 1
|
5月前
|
存储 弹性计算 监控
建设云上稳定性问题之为什么要在云效平台创建发布流水线并将源代码编译环节替换为从OSS下载构建部署物
建设云上稳定性问题之为什么要在云效平台创建发布流水线并将源代码编译环节替换为从OSS下载构建部署物
|
4月前
|
运维 监控 测试技术
5个常见运维场景,用这几个Python脚本就够了!
5个常见运维场景,用这几个Python脚本就够了!
|
5月前
|
分布式计算 运维 DataWorks
MaxCompute操作报错合集之用户已在DataWorks项目中,并有项目的开发和运维权限,下载数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5月前
|
运维 监控 容灾
智能化运维场景分析
【7月更文挑战第12天】智能运维目标是解放运维人员,提高效率,确保业务连续性和优化资源利用。
|
6月前
|
JSON 运维 Serverless
函数计算产品使用问题之如何实现数据的读取和修改,而不需要每次都从OSS下载完整的数据
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
Java 对象存储
阿里云OSS上传下载文件java
阿里云OSS上传下载文件java
390 0
|
7月前
|
存储 Serverless 对象存储
通过FC运行脚本下载文件到OSS
本文介绍了在阿里云中使用函数计算服务(Function Compute)从URL下载文件并存储到OSS(Object Storage Service)的步骤。首先,需开通函数计算服务并创建RAM角色,授权函数计算访问OSS权限。费用详情参考官方计费概述。操作步骤包括:登录OSS控制台,使用公共模板创建执行,配置参数并运行Python脚本,脚本负责从URL下载文件并上传至指定OSS Bucket。执行成功后,文件将出现在目标OSS Bucket中。
通过FC运行脚本下载文件到OSS
下一篇
DataWorks