jattach是基于hostspot attach api 指南编写的轻量all in one(jmap,jstack,jcmd,jinfo) 的工具
包含了以下命令

  • load 家在agent library
  • properties 加载系统属性
  • agentproperties 打印agent 属性信息
  • datadump 显示heap 以及thread 统计信息
  • threaddump dump 所有栈的追踪信息(类似jstack)
  • inspectheap heap 直方图(类似jmap -histo)
  • setflag 修改托管vm flag 信息
  • printflag 打印vm flag 信息
  • jcmd 执行jcmd 命令

安装

我们只需要jre,不需要jdk,同时支持容器的jvm 信息查看,官方提供了编译好的二进制文件,同时对于容器也支持了包

简单使用

  • 启动一个tomcat 容器
 
docker run -d tomcat
  • host 查看容器pid
ps -ef |grep tomcat
 

  • 查看jvm 信息
    host 机器
 
jattach 22408 jcmd Thread.print
Connected to remote JVM
Response code = 0
2019-12-13 01:51:23
Full thread dump OpenJDK 64-Bit Server VM (25.232-b09 mixed mode):
"Attach Listener" #46 daemon prio=9 os_prio=0 tid=0x00007f49e0001000 nid=0x37 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
"ajp-nio-8009-AsyncTimeout" #44 daemon prio=5 os_prio=0 tid=0x00007f4a106fd800 nid=0x36 waiting on condition [0x00007f49c913f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
 at java.lang.Thread.sleep(Native Method)
 at org.apache.coyote.AbstractProtocol$AsyncTimeout.run(AbstractProtocol.java:1162)
 at java.lang.Thread.run(Thread.java:748)
"ajp-nio-8009-Acceptor-0" #43 daemon prio=5 os_prio=0 tid=0x00007f4a106fb800 nid=0x35 runnable [0x00007f49c9240000]
   java.lang.Thread.State: RUNNABLE
 at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
 at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)
 at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)
 - locked <0x00000000ee300f50> (a java.lang.Object)
 at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:482)
 at java.lang.Thread.run(Thread.java:748)
"ajp-nio-8009-ClientPoller-1" #42 daemon prio=5 os_prio=0 tid=0x00007f4a106fa000 nid=0x34 runnable [0x00007f49c9341000]
   java.lang.Thread.State: RUNNABLE
 at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
 at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
 at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
 at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
 - locked <0x00000000ec6cfbf0> (a sun.nio.ch.Util$3)
 - locked <0x00000000ec6cfbe0> (a java.util.Collections$UnmodifiableSet)
 - locked <0x00000000ec6cfac8> (a sun.nio.ch.EPollSelectorImpl)
 at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
 at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:825)
 at java.lang.Thread.run(Thread.java:748)
.....

说明

jattach 是一个很不错的工具,我们可以用来方便的分析记基于容器的jvm 应用性能,简单方便

参考资料

https://github.com/apangin/jattach

使用jattach 在host 节点查看容器jvm信息的更多相关文章

  1. docker查看容器日志

    原文:docker查看容器日志 前言 $ sudo docker logs -f -t --tail 行数 容器名 1 2 1.命令查看 root@c68d4b5dd583c4f4ea30da2989 ...

  2. docker logs 查看容器日志操作

    查看日志 官方文档:https://docs.docker.com/engine/reference/commandline/logs/ # 查看指定数量的实时日志 # docker logs -tf ...

  3. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-1-单个host上的容器网络

    Docker 中的网络功能介绍 Docker 允许通过外部访问容器或容器互联的方式来提供网络服务 1) 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -p或 -P参数 ...

  4. Docker深入浅出系列 | 单节点多容器网络通信

    目录 教程目标 准备工作 带着问题开车 同一主机两个容器如何相互通信? 怎么从服务器外访问容器 Docker的三种网络模式是什么 Docker网络通信原理 计算机网络模型回顾 Linux中的网卡 查看 ...

  5. Docker 查看容器 IP 地址

    查看Docker的底层信息. docker inspect 会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息 docker inspect NAMES # 查看容器所有状态信息: ...

  6. Docker 创建容器 查看容器状态 - 三

    Docker 创建容器 1.拉取镜像 默认是 docker.io 仓最新镜像 docker pull tomcat 2.运行一个服务容器 docker run -d -p 0.0.0.0:18080: ...

  7. 查看容器IP地址

    我们可以通过以下命令查看容器运行的各种数据 docker inspect 容器名称(容器ID)  也可以直接执行下面的命令直接输出IP地址 docker inspect --format='{{.Ne ...

  8. 查看Java JVM参数配置信息命令

    查看Java JVM参数配置信息命令 java -XX:+PrintCommandLineFlags jvm运行时状态的参数,可以很快找出问题所在.现在把几个命令记录一下:1. jstat这个命令对于 ...

  9. 【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志

    如题: docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志 场景再现: docker部署并启动 ...

随机推荐

  1. ReverseInteger:实现int整数的反转

    原文链接 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 ...

  2. FaaS(函数即服务) + BaaS(后台即服务)

    作者 | 黄子毅(紫益) 阿里前端技术专家 导读:前端开发者是最早享受到 “Serverless” 好处的群体,因为浏览器就是一个开箱即用.甚至无需为计算付费的环境!Serverless 把前端开发体 ...

  3. torch_13_自定义数据集实战

    1.将图片的路径和标签写入csv文件并实现读取 # 创建一个文件,包含image,存放方式:label pokemeon\\mew\\0001.jpg,0 def load_csv(self,file ...

  4. vue中使用better-scroll的2种方式简述

    前言 better-scroll官方demo展示:https://ustbhuangyi.github.io/better-scroll/#/examples/en better-scroll官方文档 ...

  5. win10怎么打开服务界面?

    在键盘上同时点击“win+R”键弹出运行界面,输入services.msc,按确定. 这时就弹出了服务的界面,如图:

  6. 使用yarn来替代npm

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的 安装yarn ...

  7. 车位iou计算

    车位检测中,判断多帧图像检测出的车位是否是同一个车位.计算其IOU. 判断一个点是否在一个四边形内 Approach : Let the coordinates of four corners be ...

  8. Out,ref,params修饰符,可选参数,命名参数

    out输出,在调用函数中声明,在被调用函数中赋值: ref在调用函数中赋值,后调用: params修饰符,static double CalculateAverage(params[] values) ...

  9. Log4Net记录日志(mvc)

    转自:http://blog.csdn.net/zhoufoxcn/article/details/2220533 感谢:柄棋先生 第一步:下载Log4Net 下载地址:http://logging. ...

  10. jsonHelper帮助类

    使用前,需引用开源项目类using Newtonsoft.Json 链接:https://pan.baidu.com/s/1htK784XyRCl2XaGGM7RtEg 提取码:gs2n using ...