Processo Java (OpenDS) consuma tutta la CPU (futex flood) – come eseguire il debug di futex?

Oggi ho notato che il mio server LDAP (OpenDS) consuma CPU al 100% su each core disponibile. La diagnosi veloce mi ha mostrato che c'è un sacco di ETIMEDOUT durante la chiusura del futex.

Come posso eseguire il debug per capire cosa sta succedendo e come risolverlo?

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 

Non sono sicuro se il relativo relativo – ma ho notato anche che Redmine (Ruby app) hanno una simile "function" … Aiuto 🙂

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.