运维编排场景系列----下载JVM堆栈到OSS
场景介绍
jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。在实际运行中,如果每次 dump都指向同一个问题,我们就可以确定问题的典型性。 此时我们需要把dump下载后做分析,本文主要介绍通过OOS下载JVM堆栈到OSS。
解决方案
我们准备一台已安装JAVA和JETTY的ECS实例。远程连接进入管理终端。启动Jetty。查看JAVA进程。
登录OOS控制台。如果您之前从未开通过OOS服务,请点击“立即开通”按钮,即可一键开通。OOS运维编排是安全免费的服务,请放心开通。
开通后进入运维编排界面,点击自定义模板,点击创建模板按钮。
在创建模板页面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 }}"
输入模板名称,点击创建模板。
在自定义模板页面找到刚创建的模板,点击创建执行,选择自动执行,点击下一步。
参数设置页面需要输入以下参数:
参数说明:
- pid: java进程ID
- jstackUrl:jstack的路径
- outputFile: 堆栈在实例中输出的文件的完整路径
- instanceId:实例ID
- instanceRole:挂载到实例的RAMRole名称
- destUrl:OSS中存入堆栈的路径
确认参数无误后点击创建执行。在执行详情页面可以看到模板执行的详细过程。
执行完成后在OSS中查看堆栈文件。
堆栈文件部分内容如下:
欢迎使用OOS
OOS客户支持钉钉群:23330931
OOS管理控制台的链接
OOS帮助文档的链接
系列文章
主题文章
最佳实践
玩转运维编排服务的权限:Assume Role+Pass Role
场景系列
运维编排场景系列----更新ECS镜像
运维编排场景系列-----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组
运维编排场景系列----检测MFA功能状态
阿里云运维编排新功能:一键批量克隆ECS
运维编排场景系列-----每日统计多Region实例的运行状态
运维编排场景系列-----如何使用jq
运维编排场景系列----分批到机器上运行命令
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【五分钟了解MongoDB】Change Stream 和MongoDB 4.x
充分获知数据库的数据变动是从MongoDB向其他数据服务进行数据同步的关键点。与直接查询collection来获取数据变动相比,通过流式的方式进行监听会有效并及时的多。这是一种非常强大的“响应式编程”模式。随着MongoDB的版本更新,流式的获取方式将变得原来越易用。 让我们来一同回顾一下。在MongoDB3.6之前,如果我们希望对MongoDB数据库中的数据变动进行监听,我们通常是通过 “监听并回放oplog”(“tail the oplog”)的模式(oplog表将会记录复制集中的数据变动)。在生产环境中这种方式(“监听并回放oplog”)通常较为复杂,并且难以保证其稳定与可靠性。 Change Streams and Collections 从MongoDB3.6开始支持的 Change Streams打破了这个僵局。 Change Streams使得数据的变动监听变得简单易用。以下是一个示例,该示例演示了通过Node.js对“movieDetails”表的变动监听。 javascriptconst MongoClient = require("mongodb").MongoCl...
- 下一篇
Android Studio运行Hello World程序
老的神舟本本装上了深度LINUX了。。。应该是基于ubuntu的,安装软件用的apt-get而不是yum 想重装学下android原生开发,官网下载了android studio, 发现不用FQ也能下载了,不错不错,支持支持 下载后解压了直接双击那个Android Studio.sh运行就行了,新建一个hello world项目,结果运行不起来,那个调试那个地方都没有绿色三角形, 想了下,好像没有装JAVA,又上ORACLE上下载了JAVA的安装,结果又总是下不了,晕。。不知道是不是得FQ。。。 然后不知道从哪里搜索出来的。。在命令行里装了。。装的是OPENJDK。。。装了以后再运行android studio ,还是运行不起来 最后看了下项目设置 File -> Project Structure ,发现NDK没有安装,安装以后再apply一下,再刷新下项目,结果就能运行上了 不错不错,支持支持,特此记录一下....(下载NDK 要800多M的,看下载域名是google.com的,想着得FQ下载的。。结果不用,我的南宁电信2M带宽10分钟左右就下载好了...)
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Hadoop3单机部署,实现最简伪集群
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7安装Docker,走上虚拟化容器引擎之路