Java进程(OpenDS)消耗所有cpu(futex flood) – 如何debuggingfutex?

今天我注意到我的LDAP服务器(OpenDS)在每个可用内核上都占用100%的CPU。 快速诊断表明,在futexlocking期间有很多ETIMEDOUT。

我怎样才能debugging它来弄清楚发生了什么,以及如何解决它?

futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779077, {1342114766, 309244206}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779079, {1342114766, 309528293}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779081, {1342114766, 309812186}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779083, {1342114766, 310107537}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779085, {1342114766, 310406075}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779087, {1342114766, 310705339}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779089, {1342114766, 311018839}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779091, {1342114766, 311315446}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779093, {1342114766, 311632617}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779095, {1342114766, 311951779}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779097, {1342114766, 312278610}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f7ecf9053a4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1540779099, {1342114766, 312601929}, ffffffff) = -1 ETIMEDOUT (Connection timed out) futex(0x7f7ecf9053d0, FUTEX_WAKE_PRIVATE, 1) = 0 

不知道是否有关 – 但我也注意到,ruby(Ruby应用程序)有相似的“function”…帮助:)

哇,我花了额外的时间search,似乎闰秒是一个共鸣:

http://blog.wpkg.org/2012/07/01/java-leap-second-bug-30-june-1-july-2012-fix/

解:

 date `date +"%m%d%H%M%C%y.%S"`