Java HotSpot(TM) 64-Bit Server VM warning:

Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file:
   /tmp/hsperfdata_ol-mobile/17506
Try using the -Djava.io.tmpdir= option to select an alternate temp location.

这种异常可引起客户端连接异常,因为会造成服务不可用,注意这个异常,有可能是因为服务器端的日志文件占用的内存太多了引起JVM没有空间在/tmp下面建立JVM的pid文件

可以通过写定时任务定期删除部分log:linux 定时任务参考 http://blog.chinaunix.net/uid-7552018-id-182133.html

搜索得知这是JVM抛出的错误
大意是没有空间在/tmp下面建立JVM的pid文件
解决方式一是取消该文件的自动创建(使用的命令参数参考这个链接http://stackoverflow.com/questions/76327/how-can-i-prevent-java-from-creating-hsperfdata-files (Try JVM option -XX:-UsePerfData)),或者修改一个创建目录,但是磁盘空间依然是满的,没有处理,那么就用第二种方法,找出致满的磁盘。
df发现某一个满的分区
然后du -sh /xxx 计算这个目录的总占用量 然后层层往下 找出占用较大空间的文件 一般是/var目录占用较多空间,因为下面有日志 /var/log ,如果开机时间过久,kernel日志很可能占很大的空间导致此分区满。

错误解决后,搜索学习这个 /tmp/hsperfdata_$user/$number的作用:
That directory is part of a Java performance counter.

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

 
jvmstat会生成一个目录文件叫hsperfdata_username,那这个目录文件在哪里呢,默认的是生成在 java.io.tmpdir目录下, java.io.tmpdir在linux下默认是/tmp下,故默认开启了jvm monitor的功能以后就会在/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文件都清除掉

 

转载于:https://my.oschina.net/u/1581079/blog/671352

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值