`

jvmstat hsperfdata java.io.tmpdir

    博客分类:
  • JAVA
 
阅读更多

线上遇到一个问题:


Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding




重启后解决,主要原因是pid文件没有生成,这里记录下相关的问题点。


首先解释下  java.io.tmpdir

http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html


   If the directory argument is null then the system-dependent default temporary-file directory will 
be used. The default temporary-file directory is specified by the system property java.io.tmpdir.
On UNIX systems the default value of this property is typically "/tmp" or "/var/tmp"; 
on Microsoft Windows systems it is typically "c:\\temp". A different value may be given to this 
system property when the Java virtual machine is invoked, but programmatic changes to this
property are not guaranteed to have any effect upon the the temporary directory used by this
method






 

其次看下jvmstat使用的前提

http://java.sun.com/performance/jvmstat/faq.html#3


If the error message is of the form:
      Could not attach to vmid: reason
The jvmstat tools can only monitor the HotSpot 1.4.1 JVM and only when the target JVM has been 
started with the -XX:+UsePerfData option. Please verify that your application is running with the 
correct JVM and that the required -XX option is set. 






 

接着来说下上面2者的关系,jvmstat会生成一个目录文件叫hsperfdata_username,那这个目录文件在哪里呢,默认的是生成在 java.io.tmpdir目录下, java.io.tmpdir在linux下默认是/tmp下,故默认开启了jvm monitor的功能以后就会在/tmp目录下生成一个目录叫 hsperfdata_username ,然后这个目录中会有一个pid文件,可以利用strings查看里面的文件内容,一般就是jvm的进程信息而已。


知道了这个所以我们可以自己修改这个目录位置,防止被删除而导致一些依赖这个目录的程序出现问题。

Djava.io.tmpdir=/home/admin/xxxxxx


看下之前别人给sun的一个bug report与该问题相关的


JVM creates subdirectory "hsperfdata_xxx"

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5012932


temp dir locations should not be hardcoded for hsperfdata_<USER> dirctories

http://bugs.sun.com/view_bug.do?bug_id=6447182



针对jdk更新带出的问题 ,参见一个blog说明


Java update breaks jps, jconsole, etc


http://underlap.blogspot.com/2011/03/java-update-breaks-jps-jconsole-etc.html



由此问题进一步引申开来就会发现以下几点容易出问题的地方:


1:没有生成 hsperfdata_xxx目录报错

2:生成 hsperfdata_xxx目录但是没有pid文件

3:没权限生成,例如指定的/tmp或者其他目录不可 写,包括2种情况,一是没权限,而是空间不够

4:文件不可读,例如2个不同的用户来操作这个文件,一般是A用户启动java  B用户来运行jvmstat等等

5:java生成的目录 和 jvmstat 使用的目录文件不是同一个,这个可以见上面jdk update引起的bug导致



ps:JE的样式排版。。。。泪奔

分享到:
评论
5 楼 di1984HIT 2016-02-22  
学习了!!!!
4 楼 william_ai 2011-09-13  
hadoop也有类似的坑。
3 楼 RednaxelaFX 2011-09-13  
诶,老问题了。
2 楼 dikar 2011-09-13  
RednaxelaFX 写道
其实还有可能是/tmp被定时清理了。我们线上就有这种问题,所以启动超过1天还是几天就不行了。后来清理的脚本有的被修改过有的没修。


恩 ,是被清理了的  ,tmpwatch
1 楼 RednaxelaFX 2011-09-13  
其实还有可能是/tmp被定时清理了。我们线上就有这种问题,所以启动超过1天还是几天就不行了。后来清理的脚本有的被修改过有的没修。

相关推荐

    jvmstat-2.0_b11.zip

    《深入解析JVMstat工具:探索Java虚拟机性能监控新维度》 JVMstat,全称为Java Virtual Machine Statistics Monitoring Tool,是Java平台提供的一种强大的性能分析工具,它可以帮助开发者和系统管理员深入了解Java...

    Java如何获取当前进程ID以及所有Java进程的进程ID

    获取所有 Java 进程的进程 ID 可以使用 sun.jvmstat.monitor.MonitoredHost 和 sun.jvmstat.monitor.MonitoredVm 两个类,这两个类提供了监控和管理 Java 虚拟机的功能。 下面是一个示例代码,演示如何使用 ...

    JDK17-java-core-libraries-developer-guide.pdf

    3. **输入/输出**:`java.io`包提供了处理流、文件、序列化等功能,支持数据的读写操作。 4. **网络编程**:`java.net`包包含网络通信所需的基础类和接口,如`Socket`、`ServerSocket`,支持TCP/IP通信。 5. **多...

    jvmstat安装配置

    `C:\&gt;unzip jvmstat.zip` 3. 创建一个新的目录,例如C:\jvmstat,并将解压缩后的文件复制到该目录下。 环境变量设置 在使用jvmstat工具之前,需要设置环境变量JVMSTAT_HOME和JAVA_HOME。JVMSTAT_HOME变量表示...

    jvmstat-3_0

    【JVMStat 3.0:深入理解Java虚拟机监控工具】 JVMStat,全称为Java Virtual Machine Statistics Monitoring Tool,是Java开发人员和系统管理员用于监控Java虚拟机(JVM)性能的重要工具。JVMStat 3.0是该工具的一...

    JAVA查看安装软件列表(axun)

    在Java中,我们可以使用`sun.jvmstat.monitor`和`sun.misc`包下的非公开API来访问注册表,但这种方法可能不适用于所有Java运行环境,因为这些API是非标准且可能在未来的Java版本中被移除。因此,更稳定的方法是使用...

    基于Java的实例源码-Visualvm 基于JAVA的CPU硬件资源管理器源程序.zip

    VisualVM的源码中包含了大量的Java API使用,如`sun.jvmstat`和`java.lang.management`包,它们提供了访问JVM内部信息的接口。通过阅读源码,我们可以学习如何获取和解析这些数据,这对于理解和优化Java应用程序的...

    遭遇OutOfMemoryError

    解决过程中,首先尝试了SUN提供的性能跟踪工具`jvmstat`,但发现JVM内存使用情况正常,GC(垃圾收集)也没有异常。接着搜索了"Out of swap space"的问题,但没有找到直接的解决方案。然后尝试通过`-XX:+...

    jdk11压缩包,解压后配置环境就可以用

    Java Development Kit (JDK) 11是Java编程语言的一个重要版本,由Oracle公司发布,提供了许多新特性和改进。这个压缩包包含了JDK 11的所有必要组件,允许开发者在本地环境中运行、构建和调试Java应用程序。一旦解压...

    java troubleshooting hp

    jvmstat 是一个用于监控Java虚拟机运行时状态的命令行工具。 ##### 1.18 -verbose:class 使用`-verbose:class`选项可以启用类加载器的详细日志输出,对于诊断类加载问题非常有帮助。 ##### 1.19 -verbose:gc 使用`...

    sonar-runner-dist-2.4

    VisualVM 是一款免费且强大的 Java 性能分析工具,能够通过多种方式(如 jvmstat、JMX、SA 以及 Attach API)收集程序运行时的数据,并进行动态性能分析。它可以减少性能分析对应用程序的影响,提高分析的精度。 - ...

    jdk1.5的rt.jar的源码

    比如`com.sun`包下的`javaws`是Java Web Start的相关组件,而`sun.jvmstat`则提供了JVM统计监测工具。 在JDK1.5中,`sunw`包主要服务于Solaris操作系统,包含了一些特定平台的工具和API。虽然这个包在后续版本的JDK...

    Jvmstat Chartist-开源

    【Jvmstat Chartist】是一个基于Java的开源项目,专门设计用于帮助用户分析和可视化通过Sun的jvmstat工具收集的性能指标。jvmstat是一个强大的命令行工具,它能够提供有关Java虚拟机(JVM)内部状态的详细信息,包括...

    jdk源码-补充缺少sun包下的源码

    2. 深入理解JVM:通过阅读`sun.jvmstat`、`sun.hotspot`等包的源码,可以深入了解JVM的运行机制,如垃圾收集、性能监控等。 3. 解决问题:当遇到JVM级别的问题时,查看sun包源码往往能提供直接的解决方案。 总之,...

    tomcat 监控工具

    JVMStat是Java虚拟机的一种性能监控工具,它可以收集和显示关于JVM的内存使用、垃圾收集、线程活动等数据。在命令行中,可以使用`jstat`命令对JVM进行监控。 5. **第三方工具**: - **New Relic**:提供详细的性能...

    java SE6性能白皮书(PDF中文)

    - **jvmstat 3.0**:一种用于监视Java虚拟机运行时行为的工具。 - **Java SE6文档**:详尽的官方文档。 - **性能监控与管理** - HotSpot VM中的DTrace探测器 - 新的监控、管理和诊断功能 - 在Solaris OS上使用...

    java-turning

    - **硬件层面**:使用`vmstat`、`iostat`、`mpstat`等工具监测CPU、内存、磁盘IO等硬件资源的使用情况。 - **操作系统层面**:利用`pstack`、`pmap`等进程工具来监控进程的状态和资源消耗。 - **虚拟机层面**:使用`...

    个人整理js解析XML文档

    到此我们知道了,当系统出现内存溢出时,是哪些参数设置不合理需要调整。但我们怎么知道服务器启动时,到底JVM内存相关参数的值是多少呢。...不信我们就去看看,下面介绍如何使用SUN公司的内存使用监控工具jvmstat.

    hot:java的热更新演示例子

    这一功能主要依赖于JDK的`jdwp`(Java Debug Wire Protocol)协议和`jvmstat`性能监控工具。当类文件被修改并重新编译后,通过HotSwap,JVM能够将新的字节码替换掉旧的,而无需重启应用。 2. **JRebel**: JRebel...

    visualVM性能调优

    VisualVM通过多种技术手段(例如jvmstat、JMX、SA以及Attach API)获取程序运行时的数据,并以此为基础进行动态性能分析。此外,VisualVM还会根据具体情况自动选择更为高效的技术方案,以减少性能分析过程对应用程序...

Global site tag (gtag.js) - Google Analytics