我的高层次问题是我的构建工具 (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 间歇性行为可能就是此处的指标。