小编Tim*_*ell的帖子

需要有关 Solaris 下 Java ProcessBuilder 性能的帮助

我的问题是,JVM 是否共享某种与线程或进程相关的资源,这些资源可能会导致 ProcessBuilder 性能在正常使用一个月或更长时间后出现峰值?对所有应用程序使用 java 6 update 21。

在过去的几个月中,我们注意到数据中心中的单个服务器(运行 Solaris 10 的 Sparc M4000)可以运行大约 6-8 周而不会出现任何问题。然而,使用 ProcessBuilder 类运行脚本的应用程序的性能很快就会受到巨大的影响 - ProcessBuilder.start 有时需要一分钟多的时间才能返回。重新启动后,以及几周后,正常返回时间在 10 秒或可能 100 毫秒范围内。

我编写了一个单独的小应用程序,它创建了 5 个线程,每个线程使用 ProcessBuilder 连续运行“ls”命令 10 次,然后我从中收集统计信息以监控原始问题。该应用程序在每次运行后退出,并且每小时仅从 cron 运行一次。通常只需要一两秒钟。

昨晚,经过 45 天的正常运行时间和正常行为后,每次 ProcessBuilder.start 调用的 ProcessBuilder 时间再次飙升至一分钟多。

顶部显示没有内存或 CPU 占用。我确实尝试在测试应用程序上执行 jstack,但收到错误“无法创建 thread_db 代理”。

有任何想法吗?

java multithreading solaris processbuilder

5
推荐指数
1
解决办法
2277
查看次数

标签 统计

java ×1

multithreading ×1

processbuilder ×1

solaris ×1