Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在尝试发布到外部 MQ 队列时,我们在 Linux RedHat 机器上观察到我们的一个 Java 应用程序出现异常延迟(以前从未发生过)。对盒子进行了快速健康检查,CPU/内存使用情况似乎还不错。MQ 盒子也很好。重新启动我的Java进程,没有运气!在那之后我们抓拍了一张strace快照,里面到处都是futex()电话。
strace
futex()
想知道是否有人可以就为什么会发生这么多锁提供任何线索(我知道这是一个非常开放的问题。取决于应用程序实际执行的操作)。
但我希望能更深入地了解这个问题。
那么您是否真的对其进行了分析并确定 futex 调用是瓶颈?
假设你这样做了,一件事可能是 futex() 系统调用暗示互斥锁被争用;FUTEX = 快速用户空间互斥体,非竞争互斥体在用户空间中处理,无需系统调用。也就是说,您可能会遇到锁争用问题。