我知道至少有两个可能的原因导致这种情况发生.
Java是使用-XX:+PerfDisableSharedMem
选项运行的.此选项有时可以帮助减少JVM安全点暂停,但它也使JVM对jps
和不可见jstat
.这是一种非常可能的情况,因为您正在运行Cassandra,而最近的Cassandra 默认情况下启用此选项.
Java进程具有不同的mount命名空间,因此/tmp
Java进程与/tmp
shell的物理目录不同./tmp/hsperfdata_root
必须可以访问该目录才能使用jps
或jstat
.由于您使用的是docker容器,这也是一个合理的原因.