When creating a Socket in Java:
new Socket(host, port);
The Socket constructor will try to connect to host:port before returning. On Windows, this fails almost immediately for unreachable hosts but for Linux it can take up to 5 minutes for the Socket to timeout.
I'm aware that if I have control over creating the Sockets, I can do:
Socket s = new Socket();
s.bind(..);
s.connect(.., timeout);
but I'd rather have the OS use a reasonable default value. Is there a way to change this setting on Linux?
Thanks
I think you want /proc/sys/net/ipv4/tcp_syn_retries
. The default is usually 5 or 6 which comes out to around 3 minutes.
Note that these are system-wide.