gpt4 book ai didi

java.net.SocketTimeoutException : Read timed out under Tomcat

转载 作者:IT老高 更新时间:2023-10-28 20:35:26 26 4
gpt4 key购买 nike

我有一个基于 Tomcat 的 Web 应用程序。我间歇性地收到以下异常,

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)

很遗憾,我无法访问客户端,所以我只是想确认可能发生这种情况的各种原因,

  1. 服务器正在尝试从请求中读取数据,但它所用的时间超过了数据从客户端到达的超时值。这里的超时通常是 Tomcat 连接器 → connectionTimeout 属性。

  2. 客户端设置了读取超时,而服务器响应的时间比这更长。

  3. 我经历过的一个线程说,如果启用了保活,这可能会在高并发的情况下发生。

对于#1,我设置的初始值是 20 秒,我已将其增加到 60 秒,将测试,看看是否有任何变化。

同时,如果你们中的任何人可以就此提供专家意见,那将非常有帮助。或者就此而言,您能想到的任何其他可能导致此问题的原因。

最佳答案

Server is trying to read data from the request, but its taking longer than the timeout value for the data to arrive from the client. Timeout here would typically be tomcat connector -> connectionTimeout attribute.

正确。

Client has a read timeout set, and server is taking longer than that to respond.

没有。这将导致客户端超时

One of the threads i went through, said this can happen with high concurrency and if the keepalive is enabled.

这显然是猜测,完全不正确。当且仅当在超时时间内没有数据到达时才会发生这种情况。时期。负载和保活和并发与它无关。

这只是意味着客户端没有发送。你不必担心它。浏览器客户端以各种奇怪的方式来来去去。

关于java.net.SocketTimeoutException : Read timed out under Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com