(1)【一个小问题】jstat PID not found产生的原因
声 明:我的文章都是在实际工作中遇到并解决问题后撰写的,可能你早就一清二楚了,也可能对你没有任何帮助,喜欢就请顶一下,不喜也请勿喷。就像足球一样, 不喜欢中国足球的就请不要关注,你可以去看乒乓球、羽毛球,甚至,冰壶!但不要去骂他们,毕竟还有很多人痴心地喜欢国足,我就是其中之一。
我今天遇到了一个小问题,我想用jstat命令查看tomcat进程(PID=14472)的内存使用情况,命令如下:jstat -gcutil 14472。 然后就报错了,错误提示信息为 14472 not found。用 jps命令 查看java进程ID,居然没有输出结果。但确信java进程是存在的,用 ps -ef | grep java 能看到java进程。
百度了下,找到了这篇文章,http://dikar.iteye.com/blog/781083 ,看完后问题就解决了,记录下来,以便日后使用。
原来,java进程把jvm perfdata存到了 /tmp/hsperfdata_{USER}/{PID} 文件里,我用的是ramos用户启动的tomcat,pid为14472,所以就会生成这个文件:/tmp/hsperfdata_ramos /14472 。而之前,我做过一个修改,导致ramos用户没有文件夹/tmp/hsperfdata_ramos的写权限,所以导致出现了此问题。
最后我用root用户登录,索性把/tmp/hsperfdata_ramos文件夹删除,然后再切换到ramos用户下,重启tomcat,让它重建/tmp/hsperfdata_ramos文件夹,问题解决!
2012-5-10阅读1503 评论1
今日想利用jdk自带工具jstat命令查看gc情况。无奈使用时报进程找不到错误。痛苦万分……在网上找了许多资料,最终解决。
首先,说一下jstat大致的工作原理(下面的jvmstat应该是早期jdk里面的名称,后来改称jstat):
使用jvmstat命令会生成一个目录文件叫hsperfdata_username,那这个目录文件在哪里呢,默认的是生成在java.io.tmpdir目录下,java.io.tmpdir在linux下默认是/tmp下,故默认开启了jvm monitor的功能以后就会在/tmp目录下生成一个目录,hsperfdata_username,然后这个目录中会有一个pid文件,可以利用strings查看里面的文件内容,一般就是jvm的进程信息而已。
再看我遇到的情况,运行jstat命令后,发现/tmp目录下确实生成了hsperfdata_username文件夹,但是hsperfdata_username文件夹下面没有进程ID的文件夹。再搜索资料发现问题如下,jdk1.6.0.23/24版本兼容性问题,我整好使用的是24版本,杯具。
While it's true that 6u23/24 introduce this issue, it's not a bug in jps. Rather a change in behavior of the VM itself. On GNU/Linux Jps and the likes seem to only look at /tmp but not necessarily your CATALINA_TMPDIR. If set or not, try to export CATALINA_TMPDIR=/tmp which translates to "-Djava.io.tmpdir=/tmp" and after restarting the Tomcat process you should see Tomcat's data as "/tmp/hsperfdata_/" and Jps will most likely work again as well.
说了这么多,最后我们说说解决办法,按照上面说的不是jdk的bug,只需要修改VM的配置文件就ok.那好我们用vi打开tomcat的catalina.sh文件,并找到CATALINA_TMPDIR的说明和配置的地方。
# CATALINA_TMPDIR (Optional) Directory path location of temporary directory the JVM should use (java.io.tmpdir). Defaults to $CATALINA_BASE/temp.
可以看到他的默认路径是$CATALINA_BASE/temp。
我们修改如下,将默认配置路径注释掉,增加CATALINA_TMPDIR=/tmp这句。OK,重启tomcat就搞定了。
if [ -z "$CATALINA_TMPDIR" ] ; then# Define the java.io.tmpdir to use for Catalina
# CATALINA_TMPDIR="$CATALINA_BASE"/temp
CATALINA_TMPDIR=/tmp
fi
相关推荐
下面我们将详细探讨如何使用`jstat`工具以及通过配置GC日志来分析和优化Java进程。 `jstat`是Java虚拟机内置的一个命令行工具,用于实时监控JVM的各种运行状态,包括垃圾回收的信息。要查看哪个进程频繁进行GC,...
在监控Tomcat时,`jstat -gc <pid>`能提供GC活动的详细数据,包括新生代、老年代的内存使用情况,以及GC的时间和频率,这有助于调整GC策略以优化性能。例如,如果发现频繁的Minor GC导致了应用暂停时间过长,可能...
jStat是一个强大的JavaScript统计学库,它提供了丰富的统计计算功能,使得用户无需掌握专门的统计软件如MATLAB或R就能在Web应用中进行高级统计分析。jStat的核心特性包括静态方法和实例方法,这两种方法在处理数据时...
`jstat -gcutil <pid>` 命令用于查看新生代、老生代及持久代的垃圾收集情况统计,输出的数据包括但不限于上述 `-gc` 选项输出的信息,但通常会更简洁直观。 #### 四、总结 `jstat`作为一款强大的JVM监控工具,不仅...
在给定的标题“jstat js正态分布函数库”中,核心关注点是 `jstat` 库如何处理正态分布(也称为高斯分布)的计算。正态分布是一种在自然界和科学领域广泛出现的概率分布,它的特点是数据集中在均值周围,并呈现出...
jstat命令是用于监控Java虚拟机(JVM)运行时统计信息的命令行工具,它能够显示Java虚拟机中的堆状况、类加载、垃圾回收等多方面的数据。这个命令通常用于排查JVM性能问题或者进行监控分析。 jstat命令的基本用法...
jstat是Java虚拟机统计监视工具,它是Java开发工具包(JDK)的一部分,用于监控Java虚拟机(JVM)中的性能统计信息。该工具可以用来显示垃圾收集(GC)统计信息以及其他与JVM相关的性能指标。由于jstat工具不受...
【jstat工具详解】 jstat,全称Java Virtual Machine Statistics Monitoring Tool,是Java虚拟机自带的一个性能监控工具。它能够实时地监控Java虚拟机的各种运行状态,包括垃圾收集、类装载、内存使用、JVM编译等...
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解 本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,...
jStat提供统计功能的本地javascript实现。 完整详细信息可在。 与大多数库相比,jStat提供的功能更多,包括weibull,cauchy,泊松,超几何和beta分布。 对于大多数分布,jStat提供pdf,cdf,反函数,均值,众数,...
jmap、jstack、jstat组合使用定位jvm问题
【前端项目-jstat.zip】是一个包含JavaScript统计库的压缩包,名为"jstat"。这个库专注于为JavaScript开发者提供统计计算功能,适用于处理和分析数据。JavaScript作为一种广泛应用于Web开发的语言,通常在浏览器环境...
jstat.xlsx
jStat 是一个开源项目,专为处理 IRC(Internet Relay Chat)频道的统计信息而设计。IRC 是一种实时的网络通信协议,广泛用于在线聊天、协同工作和社区建设。jStat 机器人则是这个环境中的一个重要工具,它能够自动...
jstat-示例 使用示例 实例图 机器学习 :线性回归 :非线性回归 :使用香草KNN算法进行分类 :具有多个线程的KNN分类 :使用KMeans进行聚类 :后勤分类 :使用正则化LassoRegularizer和RidgeRegularizer线性...
使用`jstat -gcuitl pid [interval] [count]` 可以看到内存使用率的百分比,帮助监控内存分配和回收效率。 掌握这些命令行工具的使用,能极大地提高对Java应用程序的诊断和优化能力。它们提供了深入洞察应用程序...
通过`jstat -gc <pid> <interval> <count>`,我们可以定期获取JVM的垃圾回收状况,这对于优化内存配置和识别潜在的内存泄漏问题非常有帮助。 总的来说,这些工具为Java开发者提供了一套全面的诊断和监控手段,能够...
在本例中,使用的JDK版本为JDK 8,使用`jstat -gc pid`命令可以获取关于垃圾收集的详细信息,包括年轻代、老年代的内存使用情况,以及垃圾收集的时间和频率等。 二、垃圾回收统计 垃圾回收(Garbage Collection, ...
Angular-JStat是基于AngularJS框架对jStat(JavaScript Statistics Library)统计库的一个封装,使得在AngularJS应用中可以更加便捷地进行各种统计计算和数据分析。jStat是一个强大的JavaScript库,它提供了多种统计...
jstat(JVM Statistics Monitoring Tool)是Oracle JDK提供的一款强大的命令行工具,用于实时监控Java虚拟机的各种运行状态,包括内存管理、类加载、垃圾收集以及JIT编译等关键指标。了解并熟练运用jstat,能帮助...