在尝试发布到外部MQ队列时,我们在Linux机器上观察到我们的一个RedHat应用程序出现了不寻常的延迟(这种情况以前从未发生过)。在机器上做了一个快速的健康检查,CPU/内存使用率看起来还不错。MQ箱也很好用。重新启动了我的Java进程,不走运!在那之后,我们抓取了一个快速的strace快照,它充满了futex()调用。
我想知道是否有人能给出任何关于为什么会发生这么多锁的线索(我知道这是一个非常开放的问题。取决于应用程序的实际功能)。
但我希望能对这个问题有更多的了解。
发布于 2011-06-13 04:16:26
那么您是否真的对它进行了分析,并确定futex调用是瓶颈?
假设您这样做了,一件事可能是futex() syscall意味着互斥是争用的;FUTEX =快速用户空间互斥锁,非争用互斥锁在没有syscall的用户空间中处理。也就是说,您可能会遇到锁争用问题。
https://stackoverflow.com/questions/3407592
复制相似问题