Трек 1
Согласно Javadocs Httpclient, похоже, не имеет значения по умолчанию времени ожидания Socket.Чтобы ответить на вопрос в вашем обновлении - тайм-аут сеанса здесь не будет действовать.Значение по умолчанию для Weblogic составляет 30 минут.
Сервер session timeout
представляет количество времени, в течение которого HttpSession
будет храниться в памяти, если пользователь не обращался к серверу.
время ожидания сокета - это время, в течение которого сокет сервера остается открытым, пока данные передаются обратно вызывающей стороне.Это может быть даже то, что сервер все еще обрабатывает и записывает данные, но это занимает довольно много времени, и клиент только что ожидал его ожидания.
Некоторые ссылки предполагают, что по умолчанию это 60 секунд, но javadocs ничего не говорит,в любом случае вы можете установить это значение примерно на 120 секунд, чтобы посмотреть, поможет ли оно
http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/params/HttpConnectionParams.html#setSoTimeout(int)
Вам нужно рассчитать время ожидания - если это ясно.Значение - эти ошибки появляются через 30 секунд, 60 секунд или 5 минут после исходящего запроса?
Я бы изменил SO_Timeout и повторил попытку
Трек 2 - параметры ОС
Существуют рекомендуемые параметры BEA для значений NDD, которые определяют, как долговходящие соединения остаются открытыми, сколько в очереди и так далее.В Solaris их можно получить, запустив
/usr/sbin/ndd -get /dev/tcp tcp_time_wait_interval
/usr/sbin/ndd -get /dev/tcp tcp_conn_req_max_q
/usr/sbin/ndd -get /dev/tcp tcp_conn_req_max_q0
/usr/sbin/ndd -get /dev/tcp tcp_ip_abort_interval
/usr/sbin/ndd -get /dev/tcp tcp_keepalive_interval
Можете ли вы проверить документы Oracle на наличие эквивалентных команд в Linux и определить, на какие значения они должны быть установлены.На Solaris мой опыт показывает, что по умолчанию недостаточно, и их необходимо повысить до рекомендаций BEA (Oracle)
Трек 3: Журналы Weblogic / External Access
Есть ли у васвключен HTTP Access Logs на сервере?Эти неудавшиеся запросы отображаются с каким-либо размером байта ответа или они показывают 0 размеров ответа?Какой код ошибки или код состояния HTTP возвращается?
Или, возможно, эти тайм-ауты вообще не записываются в журналы доступа?
Здесь я предполагаю внешний сервер, на котором временивыходы происходят также в Weblogic, если нет - этот вопрос направляется команде внешних серверов для их эквивалентной платформы.
** Другое **
Обычно помогают дампы потока, но дампы потока должныбыть взятым на сервер, который имеет проблему тайм-аутаВы являетесь клиентом и успешно установили соединение, после чего оно истекает при чтении ответа.Итак, внешний сервер перегружен?Отсутствие потоков?Процессор высокий?Слишком много одновременных запросов?