我在我的应用程序服务器上通过 top 命令在根级别观察到一个 Java 进程 运行,它会导致性能问题吗?

I observed a Java process running at root level through top command on my application server, will it lead to performance problems?

我们正在 运行ning 负载测试并同时执行 top 命令并观察到 ​​Java 进程(运行ning 在根级别)正在消耗 204℅ cpu ,即使我们 运行 只是服务器上预期负载的 10℅。

我的一位同事也说 Java 进程不应该 运行 在根级别,因为这会导致性能问题。

我尝试在互联网上搜索,但找不到任何表明 Java 进程不应 运行 在根级别的信息。

专家注意:- 知识匮乏请见谅,请勿下载或屏蔽问题。

top 命令的屏幕截图:

这是不正确的 -- 运行将进程设置为 root 不会影响性能,但可能会影响安全性。

每个人都说除非绝对必要,否则不要 运行 你的进程作为 root 的原因是因为 root 用户对整个磁盘和许多其他事物拥有特权:外部设备、硬件、进程等。

运行 以 root 身份与世界交互的代码意味着,如果任何人都能在您的代码/项目/流程/其他任何东西中发现漏洞,那么可能造成的损害/危害的数量可能会更多比非 root 用户可能实现的要多。

尝试运行下面的命令来查找树结构中的所有进程。

ps -e -o pid,args --forest

从输出中,您将能够找出那些 java 根级别的进程或其他进程 运行 是它们的子进程。对于前。有时在测试某些脚本时,我们自己会使用 sudo 触发这些脚本,这可能会启动 java 实例。