SocketTimeoutException:使用 NGINX 配置读取超时
SocketTimeoutException: Read timed out with NGINX configuration
我有以下设置:
curl >> NGINX >> Java Client >> ELB >> NGINX >> Java Server
常规请求按预期工作,超过 60 秒的请求失败并显示 SocketTimeoutException: Read timed out
。我试着一步步调试:
- 服务器以 [=24=]200 响应并花费大约 100 秒
- 服务器日志前面的Nginx 499(客户端停止连接)
- Java客户端和Nginx日志400: SocketTimeoutException: Read timed out
我尝试减少两个 Nginx 的 proxy_read_limit
,这导致 504 Gateway timeout
。 ELB限制为240秒。
我无法访问客户端应用程序,因为它是一个 .jar,是否可以安全地假设问题是 .jar 中的超时设置,因此我无法自行解决问题?
我也很难理解在这种情况下到底谁是客户。
是的,听起来 "Java Client" 中的超时设置确实设置为小于 100 秒。如果客户端写得好,你可以通过参数或配置文件更改超时参数。不了解详情就无法多说
您可能能够通过让服务器发送 "dummy" 使连接对客户端显示为活动的数据包来解决该问题。
我有以下设置:
curl >> NGINX >> Java Client >> ELB >> NGINX >> Java Server
常规请求按预期工作,超过 60 秒的请求失败并显示 SocketTimeoutException: Read timed out
。我试着一步步调试:
- 服务器以 [=24=]200 响应并花费大约 100 秒
- 服务器日志前面的Nginx 499(客户端停止连接)
- Java客户端和Nginx日志400: SocketTimeoutException: Read timed out
我尝试减少两个 Nginx 的 proxy_read_limit
,这导致 504 Gateway timeout
。 ELB限制为240秒。
我无法访问客户端应用程序,因为它是一个 .jar,是否可以安全地假设问题是 .jar 中的超时设置,因此我无法自行解决问题? 我也很难理解在这种情况下到底谁是客户。
是的,听起来 "Java Client" 中的超时设置确实设置为小于 100 秒。如果客户端写得好,你可以通过参数或配置文件更改超时参数。不了解详情就无法多说
您可能能够通过让服务器发送 "dummy" 使连接对客户端显示为活动的数据包来解决该问题。