Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to view/change socket connection timeout on Linux?

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

like image 774
Kevin Avatar asked Jun 25 '09 20:06

Kevin


2 Answers

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.

like image 128
Duck Avatar answered Oct 27 '22 22:10

Duck


I would advise against changing OS settings as it might affect other applications unexpectedly. The Socket.setSoTimeout() method might help you too.

like image 44
akarnokd Avatar answered Oct 28 '22 00:10

akarnokd