Время от времени я вижу следующий файл stacktrace в журнале, в котором время от времени HttpClient
отключается, пытаясь получить доступ к содержимому text/script
с другого сервера. Мой вопрос в том, какие параметры конфигурации следует проверить для моего приложения J2EE, работающего на Weblogic, в Linux? Я специально ищу следующее.
- Параметры тайм-аута JVM
-
HttpClient
params - Параметр тайм-аута Weblogic или любая другая конфигурация, например количество потоков и т.д.
- Параметры приложения J2EE, такие как конфигурация сервлета и т.д.
- Ресурсы операционной системы, такие как потоки, обработчики файлов и процессор
- Любые другие настройки конфигурации, которые могут влиять на соединение сокета
- Помогла ли вам справиться с потоками?
Здесь мой код
HTTPResponse httpClientResponse;
//do some stuff
httpClientResponse.getStatusCode(); // this is where it fails
и это stacktrace
java.net.SocketTimeoutException: Read timed out
at jrockit.net.SocketNativeIO.readBytesPinned(Native Method)
at jrockit.net.SocketNativeIO.socketRead(SocketNativeIO.java:32)
at java.net.SocketInputStream.socketRead0(SocketInputStream.java)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at HTTPClient.BufferedInputStream.fillBuff(BufferedInputStream.java:206)
at HTTPClient.BufferedInputStream.read(BufferedInputStream.java:126)
at HTTPClient.StreamDemultiplexor.read(StreamDemultiplexor.java:356)
at HTTPClient.RespInputStream.read(RespInputStream.java:147)
at HTTPClient.RespInputStream.read(RespInputStream.java:108)
at HTTPClient.Response.readResponseHeaders(Response.java:1123)
at HTTPClient.Response.getHeaders(Response.java:846)
at HTTPClient.Response.getStatusCode(Response.java:331)
at HTTPClient.RetryModule.responsePhase1Handler(RetryModule.java:92)
at HTTPClient.HTTPResponse.handleResponseImpl(HTTPResponse.java:872)
at HTTPClient.HTTPResponse.access$000(HTTPResponse.java:62)
at HTTPClient.HTTPResponse$2.run(HTTPResponse.java:839)
at HTTPClient.HTTPResponse$2.run(HTTPResponse.java:837)
at
HTTPClient.HttpClientConfiguration.doAction(HttpClientConfiguration.java:666)
at HTTPClient.HTTPResponse.handleResponse(HTTPResponse.java:837)
at HTTPClient.HTTPResponse.getStatusCode(HTTPResponse.java:242)
Спасибо
Я обновляю свой вопрос с помощью FINDINGS ниже.
- На
HttpClient
нет явного тайм-аута, что означает, что http время сеанса сервера может вступить в силу. -
SO_TIMEOUT
дляHttpClient
равно 0, что означает, что он должен ждать неопределенно долго.