Reputation: 18639
I get the following exceptions on a remote server call to my server.
java.net.SocketException: Connection timed out
java.net.SocketTimeoutException: Connection timed out
java.net.ConnectException: failed to connect to www.my_url.com/my_ip (port 80): connect failed: ETIMEDOUT (Connection timed out)
My server was up, but I guess there is a small percentage of the time where it is unresponsive for some reason.
How do I interpret these exceptions? Are they all normal every once in a while or, is a common fix to allow for a longer connection time with the server before it times out?
My server is Apache running PHP.
Thanks for suggestions ahead of time.
Upvotes: 1
Views: 933
Reputation: 38809
There's is nothing you can do about these on the client other than prompt the user that something didn't work and try again later, log it for your forensics, and hope they aren't that frequent. However, I suspect your server is not responsive for several reasons and there IS something you can do about it.
Check your server's load when a timeout like this happens. Run top and see what's eating up the CPU. If you have background jobs running or the load on the application is high. If you have a background job eating up the CPU then you need to profile your code and find where the algorithm is running hot and improve it. If you have a load problem or you can't really improve your code then you need to either scale up your server: faster server, get more memory, deploy caching, faster DB, run Quercus (4x improvement over C PHP). Or get more servers and scale horizontally with a load balancer. The later one depends a lot on architecture of your application, but that is something you can fix.
Upvotes: 3