upstream timed out (110: Connection timed out) while reading response header from upstream,没想到是JDK的坑

今天公司的前端代理从node换成了nginx,并且迁移到新的服务器上部署。

一切都顺利的进行,只是访问项目的时候,接口奇慢,并且最后报了504的错。

顺藤摸瓜,第一步来到nginx排斥错误,tail了error的日志信息,看到了报错如下

 一开始照着这个报错信息,一顿百度,加了各种nginx的超时配置,没卵用。。。

在这里也劝大家,一般而言nginx都有默认的超时配置,只要接口的性能正常,都可以正常返回!

接下来,来到服务端排查。。。。。

很明显的发现,请求压根没进到服务(我们后端采用springcloud微服务体系),那果断来到网关层看看,果然看到了不寻常。

 对,就是他,马上百度之。

reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response解决方案_Lovnx-优快云博客

这篇博客给了我灵感,答案在这行。

 调整JVM参数,我瞬间想到,今天刚装的openJDK有点诡异,因为我的服务启动的时候,居然报错栈内存-Xss不够用,难道是JVM和springcloud gateway 版本不一致?

抱着死马当活马医的态度,我就把之前的openJDK卸了。

重新装了适配版的openJDK,果然重启服务之后,接口起飞~

好吧,挖坑的是自己,填坑的还是自己。。。。。

### 回答1: upstream timed out (110: connection timed out) while reading response header from upstream 意思是在从上游服务器读取响应头时,连接超时了。这通常是由于上游服务器响应时间过长或网络连接不稳定导致的。要解决此问题,可以尝试增加上游服务器的响应时间或优化网络连接。 ### 回答2: 这个错误是由于Nginx与上游服务器之间的连接超时而产生的。通常,这个问题会在Nginx尝试从上游服务器读取响应头时发生。 当Nginx在与上游服务器建立连接时,它会发送一个请求,并等待回复。如果上游服务器没有及时响应,Nginx将会超时,并返回“upstream timed out”的错误消息。 这个问题可能有几个原因: 1. 上游服务器负载过重:如果上游服务器正在处理大量的请求,那么它们可能会消耗所有可用的资源,导致响应时间变慢,从而引发超时错误。 2. 网络延迟问题:网络连接不良或严重的包丢失可能会导致Nginx在与上游服务器进行通信时超时。 3. Nginx配置错误:如果Nginx配置不正确,它可能会尝试将请求发送到不存在的上游服务器,从而导致超时错误。 为了解决此问题,可以采取以下措施: 1. 调整上游服务器负载,以确保它具有足够的资源来及时响应请求。 2. 检查网络连接,并修复任何延迟或严重的包丢失问题。 3. 检查Nginx配置,确保它正确地指向上游服务器。 在遇到“upstream timed out”的错误时,需要仔细检查错误日志以获取更多详细信息并找出错误的根本原因。处理好上述三个方面,可以有效解决该错误。 ### 回答3: 当访问网站时,经常会遇到 "upstream timed out (110: connection timed out) while reading response header from upstream" 的错误提示。这个错误提示通常是由于 Nginx 服务器无法从它的后端服务器接收到响应,在规定的超时时间内无法与后端服务器建立连接时出现的。具体来说,Nginx 服务器与后端服务器通信的过程分为两个阶段,第一个阶段是连接阶段,第二个阶段是响应阶段。如果其中一个阶段超时,Nginx 服务器就会出现该错误提示。 出现 "upstream timed out" 的错误可能有以下几个原因: 1. 后端服务器故障或者已经关闭。 2. 后端服务器响应过慢,Nginx 服务器在超时时间内未能收到响应。 3. Nginx 服务器连接过程失败,在规定时间内不能与后端服务器建立连接。 为了解决这个问题,我们需要提前知道出现这个错误的原因。首先,我们需要排除后端服务器故障的可能性,可以通过在后端服务器运行 curl 或者 telnet 命令来检查是否能够正常响应。 如果后端服务器没有故障,那么我们可以考虑调整 Nginx 服务器的配置文件来解决。可以尝试增加响应超时时间,或者减少连接超时时间,例如将超时时间从默认的 60 秒改为 120 秒。 在 Nginx 配置文件中,我们可以使用以下命令来设置超时时间: proxy_read_timeout 设置后端服务器的响应超时时间,默认值是 60 秒。 proxy_connect_timeout 设置 Nginx 服务器与后端服务器连接的超时时间,默认是 60 秒。 proxy_send_timeout 设置 Nginx 服务器向后端服务器发送请求的超时时间,默认是 60 秒。 upstream_timeout 设置 Nginx 服务器与后端服务器连接的总超时时间,包括建立连接和响应时间。默认值为 60 秒。 总之,当 Nginx 服务器出现 "upstream timed out (110: connection timed out) while reading response header from upstream" 的错误提示时,我们可以通过排除后端服务器故障的可能性和调整 Nginx 配置文件中的超时时间来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值