Java调优

为什么java进程已启动,但jps却显示不了该进程进程号?

  1. 现象
    ps -ef能看到启动的java进程,但是用jps查看却不存在该进程的id。
    导致jconsole、jvisualvm无法监控该进程,其他java自带工具也无法使用。
  2. 原因
    java程序启动后,默认在/tmp/hsperfdata_{uname}目录下创建以pid为文件名的新文件,存储jvm运行的相关信息。jps、jconsole、jvisualvm等工具的数据源就是文件/tmp/hsperfdata_{uname}/pid。所以当该文件不存在或是无法读取时就会出现jps无法查看进程号,jconsole无法监控等问题。
    • 权限原因:没有读写权限
      没有写/tmp目录权限 or 磁盘已满,无法创建文件。
      没有读文件权限。
    • 数据原因:文件被清理
      文件被清理。(Linux大多存在定时任务对/tmp进行清理,eg:crontab)
    • 路径原因:路径被更改
      启动使用-Djava.io.tmpdir更改了临时目录,但是jps、jconsole等只会从/tmp读取。
posted @ 2022-03-28 12:37  chengjunjie  阅读(47)  评论(0)    收藏  举报