首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在码头容器中使用jcmd、jps或jstat cassandra进程

不能在码头容器中使用jcmd、jps或jstat cassandra进程
EN

Stack Overflow用户
提问于 2015-12-01 18:13:22
回答 1查看 5.9K关注 0票数 7
代码语言:javascript
复制
    $ jcmd -l 
    418 sun.tools.jcmd.JCmd -l

    $ jstat -gcutil -t 10 250ms 1
    10 not found

我知道jdk中的错误与将jstat作为根用户附加到作为不同用户运行的进程有关。

在这里,这个停靠容器有一个用户根,如下面的ps命令所示,cassandra运行在root下。

代码语言:javascript
复制
 $ whoami
 root

我尝试执行以下操作:$ sudo -u根jcmd -l

任何帮助都是非常感谢的。

Docker容器是debian:jessie运行java版本: openjdk版本“1.8.0_66-内部”

下面是ps -ef的输出:

代码语言:javascript
复制
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堆栈成功地转储出线程的堆栈跟踪。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 01:22:23

我知道这至少有两个可能的原因。

  1. 使用-XX:+PerfDisableSharedMem选项运行Java。这个选项有时有助于减少JVM的暂停,但它也使JVM对jpsjstat不可见。这是一个非常可能的情况,因为您正在运行Cassandra,而最近的Cassandra有此选项在默认情况下
  2. Java有一个不同的挂载命名空间,因此Java的/tmp/tmp在物理上不是同一个目录。目录/tmp/hsperfdata_root必须是可访问的,才能使用jpsjstat。这也是一个合理的理由,因为你是使用码头集装箱。
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34027234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档