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.
I would advise against changing OS settings as it might affect other applications unexpectedly. The Socket.setSoTimeout()
method might help you too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With