我有一个在 RedHat Linux 上运行的 java/tomcat 应用程序。最初,当我启动该应用程序时,一切似乎都运行良好。然而,过了一段时间,我猜是 1-2 天,我看到了以下顶级输出。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7023 root 20 0 2857m 577m 5920 S 0.0 14.6 5:12.80 /prd/JAVA//bin/java -Djava.util.logging.config.file=/prd/myapp
17729 myus 20 0 2875m 574m 5920 S 0.0 14.5 10:49.76 /prd/JAVA//bin/java -Djava.util.logging.config.file=/prd/myapp
12597 root 20 0 2868m 564m 6304 S 0.0 14.3 5:54.86 /prd/JAVA//bin/java -Djava.util.logging.config.file=/prd/myapp
15863 myus 20 0 2856m 563m 5936 S 0.0 14.2 10:21.21 /prd/JAVA//bin/java -Djava.util.logging.config.file=/prd/myapp
我真的很困惑我的应用程序怎么会运行 4 次。值得一提的是,它还占用了所有 4 个实例的内存。请解开这个谜团。
答案1
它可能在应用程序中有一个自动重启 jvm 代码。我会寻找像 crontab 这样明显的地方,并查看为什么它在两个用户下启动(这意味着它从两个地方启动)。如果它是内部应用程序,那么您可能还会询问开发人员,因为他可以从应用程序本身重新启动该应用程序。
答案2
您可以使用以下命令查看 myuser 和 root 的 crontab crontab -l
。如果没有,则可能是 logrotate 配置的 postrotate 部分正在启动新进程。