jps

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解

懵懂的女人 提交于 2019-12-23 21:20:39
http://www.open-open.com/lib/view/open1390916852007.html JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此对这些资料的作者表示感谢!关于JVM性能调优相关的资料,请参考文末。 A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下: jps [options] [hostid] 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下:

简单看线程死锁

ぐ巨炮叔叔 提交于 2019-12-23 17:13:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 如果是本地项目可以自己模拟出死锁,直接执行jvisualvm查看 如果是线上导出 然后本地打开看 点击线程dump 这里说的很清楚线程1等待线程2 ,线程2等待线程1。 补充: jps 列出java进程,类似于ps命令 参数-q可以指定jps只输出进程ID ,不输出类的短名称 参数-m可以用于输出传递给Java进程(主函数)的参数 参数-l可以用于输出主函数的完整路径 参数-v可以显示传递给JVM的参数 jps 6260 Jps 7988 Main 400 jps -q 7988 7152 jps -m jps -m -l jps -m -l -v jinfo 可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数 -flag <name>:打印指定JVM的参数值 -flag [+|-]<name>:设置指定JVM参数的布尔值 -flag <name>=<value>:设置指定JVM参数的值 显示了新生代对象晋升到老年代对象的最大年龄 jinfo -flag MaxTenuringThreshold 2972 -XX:MaxTenuringThreshold=15 显示是否打印GC详细信息 jinfo -flag PrintGCDetails 2972 -XX:

生产环境cassandra问题二则

安稳与你 提交于 2019-12-20 01:07:25
生产环境cassandra问题二则 环境 操作系统:CentOS Linux release 7.3.1611 (Core) jdk:java-1.8.0-openjdk-1.8.0.121 cassandra:3.11.2 1.使用systemctl启动无法生成pid 问题描述 root用户使用systemctl语句启动cassandra时,虽然cassandra正常启动了,但是未生产pid文件。 问题解决 经检查,发现是server文件的ExecStart脚本路径错误,导致pid文件无法生成。 调整: vim /usr/lib/systemd/system/cassandra.service ExecStart = /opt/database/apache-cassandra/bin/cassandra -p /opt/database/apache-cassandra/cassandra.pid 2.jps无法找到cassandra 问题描述 使用jps无法检测到cassandra进程: [ root @c1 - redis01 ~ ] # jps 15285 Jps 1500 cassandra_exporter . jar 问题解决 百度后了解到cassandra的jvm配置有自选项PerfDisableSharedMem,如果启动,会无法使用jps

JVM工具分析

江枫思渺然 提交于 2019-12-17 23:41:08
JVM工具分析 JDK监控和故障处理工具 名称 主要作用 jps 查看系统内所有jvm虚拟机进程 jstat 用于收集虚拟机各方面的运行数据 jinfo 显示虚拟机配置信息 jmap 生成虚拟机内存转储快照(dump 文件) jhat 用于分析dump文件,会建立一个http服务,在7000端口 jstack 显示虚拟机线程快照 处理工具详解 jps 常用选项 选项 作用 -q 只输出LVMID(jvm唯一进程id 一般与物理机进程相同),省略主类名称 -m 输出虚拟机进程启动时传递给主类main()函数的参数 -l 输出主类的全名,如果进程执行的是Jar包,输出jar路径 -v 输出虚拟机进程启动时Jvm参数 详细举例 我本地启动了 IDEA开发工具,启动的idea项目采用了gradle做依赖管理。以此时的环境展示以下命令的结果。 jps jps 查看进程号,和main函数名称。 jps -q 查看进程号,省略Main函数名称。一般该命令不太常用,省略函数名称会导致区分不出你想要关注的进程。 jps -m 输出虚拟机进程启动时传递给主类main()函数的参数。 手动书写了一个main函数,使用Idea启动他,并在启动时设置program arguments。如下图所示,然后打断点,使主进程停止运行,防止线程结束。 然后使用Jps -m 可以查看此时的情况。 jps -l

Hadoop jps出现process information unavailable提示解决办法  

时光总嘲笑我的痴心妄想 提交于 2019-12-16 11:33:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 启动Hadoop之后,使用jps命令查看当前 系统的java进程情况,显示: hduser@jack:/usr/local/hadoop$ jps 18470 SecondaryNameNode 19096 Jps 12167 -- process information unavailable 19036 NodeManager 18642 ResourceManager 18021 DataNode 17640 NameNode 这时可以通过进入本地文件系统的 /tmp 目录下,删除名称为 hsperfdata_{username} 的文件夹,然后重新启动Hadoop。 来源: oschina 链接: https://my.oschina.net/u/593529/blog/417252

Java内置工具包tools.jar(一)sun.tools.jstack.Jps

坚强是说给别人听的谎言 提交于 2019-12-16 11:33:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们知道,在JAVA_HOME/bin下有诸多内置命令,是我们在使用Java或者监控、排查它时用到的命令。其中tools.jar中包含了大多数命令的执行入口。后面我将写一系列对这些命令的实现细节的文章,使用方法文本不做讨论。 jps命令是java开发人员最常用的命令之一,它输出了当前用户下java进程的一些基本信息。我们从jps开始阅读,它的入口在 sun.tools.jstack.Jps 中。 在参数校验逻辑之后,获取到jps命令中监控的目标机,然后从中拿到目标机中可用的jvm进程。 HostIdentifier hostId = arguments.hostId(); MonitoredHost monitoredHost = MonitoredHost.getMonitoredHost(hostId); // get the set active JVMs on the specified host. Set jvms = monitoredHost.activeVms(); MonitoredHost监控的目标机可以是本地进程,也可以是通过RMI远程调用的进程。 获取到监控主机之后就要获取运行列表,这里是jps的数据来源,我们local模式为例,在MonitoredHostProvider

jps出现process information unavailable提示解决办法

送分小仙女□ 提交于 2019-12-16 11:18:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> jps时出现如下信息: 3019 -- process information unavailable 3053 -- process information unavailable 2985 -- process information unavailable 2917 -- process information unavailable 2968 -- process information unavailable 3002 -- process information unavailable 3036 -- process information unavailable 2934 -- process information unavailable 2951 -- process information unavailable 8126 Jps 解决办法: 进入tmp目录, cd /tmp 删除该目录下 名称为hsperfdata_{username}的文件夹 然后jps 8283 Jps 世界清静了。 来源: oschina 链接: https://my.oschina.net/u/232550/blog/178024

jdk内置java命令 -java环境监控

自作多情 提交于 2019-12-12 21:43:25
参考: Oracle Javase8 Doc 关注Monitoring 1. jps 查询当前机器上当前用户的jvm进程的启动信息,包括pid,启动类,启动参数等相关信息 jps -lv | findstr Test jps -lv | grep Test jps [ options ] [ hostid ] options: -q 只展示JVM的进程id -m 展示main方法的参数,如果是内置JVM -l 展示main class的全路径名称 -v 展示传给JVM的环境变量(启动参数) -V 只展示进程id 以及 class 名称 2. jstat 查询JVM到的运行统计数据 3. jmap 打印堆内存详情 jmap -heap 1 jmap [ options ] pid jmap [ options ] executable core jmap [ options ] [ pid ] server-id@ ] remote-hostname-or-IP options: no option 当没有option被用到时,jmap会打印出指定jvm进程所有共享对象的mappings,包括所有的共享对象的起始地址,大小,以及共享对象文件的全路径。和Oracle的Solaris pmap类似; -dump:[live,] format=b, file=filename

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-10 15:41:43
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此对这些资料的作者表示感谢!关于JVM性能调优相关的资料,请参考文末。 A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下: jps [options] [hostid] 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下: -q 不输出类名、Jar名和传入main方法的参数 -m 输出传入main方法的参数 -l 输出main类或Jar的全限名 -v 输出传入JVM的参数 比如下面: root@ubuntu:/# jps -m -l 2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5

Java命令学习系列(一)——Jps

与世无争的帅哥 提交于 2019-12-10 03:58:42
jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程。 位置 我们知道,很多Java命令都在jdk的JAVA_HOME/bin/目录下面,jps也不例外,他就在bin目录下,所以,他是java自带的一个命令。 功能 jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。 原理 jdk中的jps命令可以显示当前运行的java进程以及相关参数,它的实现机制如下:
java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹里,生成一个类似于hsperfdata_User的文件夹,这个文件夹里(在Linux中为/tmp/hsperfdata_{userName}/),有几个文件,名字就是java进程的pid,因此列出当前运行的java进程