studio - java.net.SocketTimeoutException: tiempo de espera de lectura caducado en tomcat
read timed out traducir (2)
Tengo una aplicación web basada en Tomcat. Estoy recibiendo intermitentemente la siguiente excepción,
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:532)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)
at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:563)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:124)
at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:346)
at org.apache.coyote.Request.doRead(Request.java:422)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:431)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385)
Lamentablemente, no tengo acceso al cliente, así que solo intento confirmar por varias razones,
El servidor intenta leer datos de la solicitud, pero tarda más que el valor de tiempo de espera para que los datos lleguen del cliente. El tiempo de espera aquí normalmente sería el conector tomcat -> atributo connectionTimeout.
El cliente tiene un tiempo de espera de lectura configurado, y el servidor tarda más tiempo en responder.
Uno de los hilos por los que he pasado dice que esto puede suceder con alta concurrencia y si el keepalive está habilitado.
Para el n. ° 1, el valor inicial que había establecido era de 20 segundos, lo había elevado a 60 segundos, verificaría y vería si había algún cambio.
Mientras tanto, si alguno de ustedes puede proporcionarle una opinión experta sobre esto, será realmente útil. O para el caso, cualquier otra razón que pueda pensar que pueda causar este problema.
Gracias por adelantado.
Vicky
El servidor intenta leer datos de la solicitud, pero tarda más que el valor de tiempo de espera para que los datos lleguen del cliente. El tiempo de espera aquí normalmente sería el conector tomcat -> atributo connectionTimeout.
Correcto.
El cliente tiene un tiempo de espera de lectura configurado, y el servidor tarda más tiempo en responder.
No. Eso causaría un tiempo de espera en el cliente.
Uno de los hilos por los que he pasado dice que esto puede suceder con alta concurrencia y si el keepalive está habilitado.
Eso es obviamente conjeturas, y completamente incorrecto. Sucede si y solo si no llegan datos dentro del tiempo de espera. Período. Load y keepalive y concurrency no tienen nada que ver con eso.
Simplemente significa que el cliente no está enviando. No necesitas preocuparte por eso. Los clientes del navegador vienen y van en todo tipo de formas extrañas.
Estoy usando 11.2 y he recibido tiempos de espera.
Lo resolví usando la versión de jsoup a continuación.
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
<scope>compile</scope>
</dependency>