JVM(1.6.0_22)在 Solaris 10 上调用 OS 命令时出现性能问题

JVM(1.6.0_22)在 Solaris 10 上调用 OS 命令时出现性能问题

我的高层次问题是我的构建工具 (Maven) 在 Solaris 10 环境中突然变得非常慢。构建原本需要 8 分钟,现在需要 50 分钟。

我把这个问题缩小到一个 Maven 插件反复调用

Runtime.getRuntime().exec("env");

这使得 JVM(版本 1.6.0_22)在 OS 上调用“env”命令。

每次调用大约需要 1.5 秒,而在其他 Solaris 10 机器上则只需几毫秒。

重启机器曾经有帮助,几周后一切又恢复正常。现在它又坏了,重启也无济于事。

谢谢

答案1

可能是 bug6970542

尝试设置:

导出 DTRACE_DOF_INIT_DISABLE=1

我在许多测试机器上都看到过这个问题,它们运行正常,但后来启动速度开始变得非常慢。在 JDK 1.6.0_26 上,它又可以正常运行。

答案2

也许分叉当前进程需要的时间比预期的要长。因此,问题不在于 OS 命令调用,而在于 JVM/线程:

https://stackoverflow.com/questions/3910760/does-runtime-getruntime-exec-have-a-bad-performance 间歇性行为可能就是此处的指标。

相关内容