打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java HotSpot(TM) 64-Bit Server VM warning
起namenode时,hadoop报错:

JavaHotSpot(TM) 64-Bit Server VM warning: Insufficient space for sharedmemory file:

   /tmp/hsperfdata_work/23408

Try using the-Djava.io.tmpdir= option to select an alternate temp location.

 


搜索得知这是JVM抛出的错误

大意是没有空间在/tmp下面建立JVM的pid文件

解决方式一是取消该文件的自动创建(使用的命令参数参考这个链接http://stackoverflow.com/questions/76327/how-can-i-prevent-java-from-creating-hsperfdata-files TryJVM option -XX:-UsePerfData),或者修改一个创建目录,但是磁盘空间依然是满的,没有处理,那么就用第二种方法,找出致满的磁盘。

df发现某一个满的分区

然后du -sh /xxx计算这个目录的总占用量 然后层层往下 找出占用较大空间的文件 一般是/var目录占用较多空间,因为下面有日志 /var/log,如果开机时间过久,kernel日志很可能占很大的空间导致此分区满。


错误解决后,搜索学习这个 /tmp/hsperfdata_$user/$number的作用:

Thatdirectory is part of a Java performance counter.


这个文件存的应该是JVM进程当前的一些性能参数(或者说运行信息)


 

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


而jps、jconsole、jvisualvm等工具的数据来源就是这个文件(/tmp/hsperfdata_userName/pid)。所以当该文件不存在或是无法读取时就会出现jps无法查看该进程号,jconsole无法监控等问题



/tmp/hsperfdata_userName/pid文件会在对应java进程退出后被清除。如果java进程非正常退出(如kill-9),那么pid文件会被保留,直到执行一次java命令或是加载了jvm程序的命令(如jps、javac、jstat),会将所有无用的pid文件都清除掉

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Jps介绍以及解决jps无法查看某个已经启动的java进程问题
an unexpected error has been detected by java runtime environment
浅析JVM崩溃的原因及解决方法
探究JVM内存泄露
记一次java应用内存不断增长问题解决过程
JVM中可生成的最大Thread数量
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服