$ jcmd -l
418 sun.tools.jcmd.JCmd -l
$ jstat -gcutil -t 10 250ms 1
10 not found我知道jdk中的错误与将jstat作为根用户附加到作为不同用户运行的进程有关。
在这里,这个停靠容器有一个用户根,如下面的ps命令所示,cassandra运行在root下。
$ whoami
root我尝试执行以下操作:$ sudo -u根jcmd -l
任何帮助都是非常感谢的。
Docker容器是debian:jessie运行java版本: openjdk版本“1.8.0_66-内部”
下面是ps -ef的输出:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:40 ? 00:00:00 /bin/bash /run.sh
root 10 1 11 17:40 ? 00:02:25 java -ea -javaagent:/usr/share/c
root 375 0 0 17:49 ? 00:00:00 bash
root 451 375 0 18:00 ? 00:00:00 ps -ef旁白:j堆栈成功地转储出线程的堆栈跟踪。
发布于 2015-12-02 01:22:23
我知道这至少有两个可能的原因。
-XX:+PerfDisableSharedMem选项运行Java。这个选项有时有助于减少JVM的暂停,但它也使JVM对jps和jstat不可见。这是一个非常可能的情况,因为您正在运行Cassandra,而最近的Cassandra有此选项在默认情况下。/tmp与/tmp在物理上不是同一个目录。目录/tmp/hsperfdata_root必须是可访问的,才能使用jps或jstat。这也是一个合理的理由,因为你是使用码头集装箱。https://stackoverflow.com/questions/34027234
复制相似问题