2010-08-04 125 views
1

我們在Linux RedHat機器上觀察我們的Java應用程序中的一個Java應用程序中的異常延遲,同時嘗試發佈到外部MQ隊列(它從未發生過)。對盒子和CPU /內存使用情況進行了快速健康檢查,看起來相當不錯。 MQ盒也很好。重新啓動我的Java進程,沒有運氣!之後我們抓住一個快速strace快照,並且它充滿了futex()調用。futex()調用太多

想知道是否有人可以提供任何線索,說明爲什麼會出現如此多的鎖(我知道這是一個非常開放的問題,取決於應用程序的實際功能)。

但我希望對問題有更深入的瞭解。

回答

1

那麼你是否真的對其進行了分析並確定futex呼叫是瓶頸?

假設你做了,有一件事可能是futex()系統調用意味着互斥體被爭用; FUTEX =快速用戶空間互斥體,無用互斥互斥體在用戶空間中處理,無需系統調用。也就是說,您可能會遇到鎖定爭用問題。

+0

糟糕,這個問題發佈差不多一年前了。好吧.. – janneb 2011-06-12 20:17:16