应用程序每隔几分钟挂在 futex_wait_queue_me() 上

use*_*956 5 java ubuntu groovy

我在 Ubuntu 11.10 机器上的 Groovy 中运行一个简单的脚本,它采用键/值对并将它们循环添加到 JDBM 映射中。
每约 3 分钟,脚本会挂起几分钟,然后再继续。
当我查看资源监视器时,我看到没有 CPU 或内存活动,并且进程在futex_wait_queue_me().
请通过应用程序在没有挂起的情况下运行的方式在 Windows 机器上提出克服这个问题的方法。
这可能是操作系统问题吗?(futex_wait_queue_me()在 Ubuntu0 中发现了许多关于类似问题的类似线程,
谢谢

小智 6

请检查内核版本。我在 Centos6 上遇到了类似的问题(java 和其他多线程应用程序)并将内核升级到版本 2.6.32-504.16.2.el6.x86_64 解决了这个问题。

请参阅 centos 错误报告:https ://bugs.centos.org/view.php?id = 8703 ,其中包含指向问题解释的指针:https : //github.com/torvalds/linux/commit/76835b0ebf8a7fe85beb03c75121419a7dec52f0 [ ^]

我的堆栈跟踪是:

cat /proc/23199/stack
[<ffffffff810b226a>] futex_wait_queue_me+0xba/0xf0
[<ffffffff810b33a0>] futex_wait+0x1c0/0x310
[<ffffffff810b4c91>] do_futex+0x121/0xae0
[<ffffffff810b56cb>] sys_futex+0x7b/0x170
[<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff
Run Code Online (Sandbox Code Playgroud)


use*_*956 -1

对于任何感兴趣的人,我在运行 java 时使用了这些参数:

-Xms16384M -Xmx16384M
Run Code Online (Sandbox Code Playgroud)

您可以在http://randomlyrr.blogspot.it/2012/03/java-tuning-in-nutshell-part-1.html找到其他 GC 优化技巧