У меня есть веб-приложение на основе Tomcat. Я периодически получаю следующее исключение,
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)
К сожалению, у меня нет доступа к клиенту, поэтому я просто пытаюсь подтвердить по разным причинам, что это может произойти,
Сервер пытается прочитать данные из запроса, но это занимает больше времени, чем значение тайм-аута для получения данных от клиента. Тайм-аут здесь, как правило, будет соединителем tomcat → атрибут connectionTimeout.
У клиента установлен тайм-аут чтения, и серверу требуется больше времени, чтобы ответить.
Один из потоков, через который я прошел, сказал, что это может произойти с высоким параллелизмом и если включен keepalive.
Для # 1 начальное значение, которое я установил, было 20 с, я увеличил его до 60 с, проверим и посмотрим, есть ли какие-либо изменения.
Между тем, если кто-то из вас, ребята, может дать вам экспертное мнение по этому вопросу, это будет очень полезно. Или по любой другой причине, вы можете подумать о том, что может вызвать эту проблему.