Details
-
Enhancement
-
Resolution: Done
-
Major
-
3.5.1
-
None
Description
Currently FD_HOST PingTask has 2 loops, ping loop and cheking timeout loop.
for (h: hosts) { ping_and_update_timestamp(host) } current = System.currentTimeMillis(); for (h: hosts) { compare current and (ping_timestmp + timeout) }
Testing with large number of hosts, after lengthy Full GC during the ping loop, FD_HOST checks timeout and it counts the Full GC time in, sometimes causes many false suspects.
For example, 1 min Full GC and 50 sec timeout, all hosts are suspected with current implementation.
To reduce the impact of the Full GC time, we can combine the 2 loops into 1 loop, ping and checking timeout each host, so the Full GC delay only affects to a single host and never affect to other hosts.