В одном из моих приложений мы подключились к другому серверу с помощью HttpURLConnection - приложение работало отлично в течение нескольких месяцев, и теперь внезапно все обращения сталкиваются с таймаутом соединения. Периодически несколько вызовов (1 из 500) завершаются успешно, в то время как все остальные не выполняются. Приложение развернуто в Linux, работающем на Java 5 с Tomcat 5.5. Я пробовал curl и wget из командной строки, которые работают нормально.
Другой процесс Java, использующий точно такую же кодовую базу, может устанавливать соединения из командной строки. Мы перезапустили сервер Tomcat, а также компьютер, но безрезультатно. Мы тщательно проверили машину, и никакие блокирующие процессы / брандмауэры не препятствуют этому (очевидно, что другие процессы Java могут устанавливать соединения).
В прерывистых пакетах (скажем, один раз в день) приложение может установить несколько соединений, а затем возвращается в нерабочее состояние. Из трассировки стека также мало что видно.
Какие-нибудь предложения, где это могло бы пойти не так?
[Обновить] В случае, если DNS сервера изменяется во время работы приложения, Java не подхватит это, и соединения прекратят работу со старого IP (учитывая, что IP не работает). Таким образом, в случае CDN, если узел выходит из строя и его заменяют другим IP, может возникнуть проблема.