1

在尝试发布到外部 MQ 队列时,我们在 Linux RedHat 机器上观察到我们的一个 Java 应用程序出现异常延迟(以前从未发生过)。对盒子进行了快速健康检查,CPU/内存使用情况似乎还不错。MQ 盒子也很好。重新启动我的Java进程,没有运气!在那之后我们抓拍了一张strace快照,里面到处都是futex()电话。

想知道是否有人可以就为什么会发生这么多锁提供任何线索(我知道这是一个非常开放的问题。取决于应用程序实际执行的操作)。

但我希望能更深入地了解这个问题。

4

1 回答 1

2

那么您是否真的对其进行了分析并确定 futex 调用是瓶颈?

假设你这样做了,一件事可能是 futex() 系统调用暗示互斥锁被争用;FUTEX = 快速用户空间互斥体,非竞争互斥体在用户空间中处理,无需系统调用。也就是说,您可能会遇到锁争用问题。

于 2011-06-12T20:16:26.003 回答