news 2026/2/12 14:15:12

走gateway接口偶现返回Internal Server Error

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
走gateway接口偶现返回Internal Server Error

1.现象:业务反馈接口返回Internal Server Error

经排查sringcloudgateway中有这个日志报错:

18:49:40.317 [reactor-http-epoll-4] ERROR org.springframework.core.log.CompositeLog.error(CompositeLog.java:102) [traceId: ] - [009a73dc-74671082] 500 Server Error for HTTP POST "某接口url"

reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response

Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:

Error has been observed at the following site(s):

*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]

*__checkpoint ⇢ com.alibaba.csp.sentinel.adapter.spring.webflux.SentinelWebFluxFilter [DefaultWebFilterChain]

*__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]

*__checkpoint ⇢ HTTP POST "/marketing-activity-task/api/open/v1/task/taskMatchQuery" [ExceptionHandlingWebHandler]

Original Stack Trace:

reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response

代表该请求在请求途中被打断,抛出异常。

参考帖子:https://blog.csdn.net/rickiyeat/article/details/107900585

2.解决方案:调整启动参数+连接时间

1.在AGD opengateway服务的启动脚本中加上-Dreactor.netty.pool.leasingStrategy=lifo

2.opengateway新增nacos配置:spring.cloud.gateway.httpclient.pool.maxIdleTime

先检查common的nacos配置中restTemplate.config.connection.connectTimeout

该配置为建立连接成功后,从服务器读取超时,单位毫秒ms

修改点:spring.cloud.gateway.httpclient.pool.maxIdleTime<restTemplate.config.connection.connectTimeout

设置空闲请求时间小于连接后端服务的超时时间,这样能够确保SCG回收请求在后端服务回收请求之前,也就可以避免拿到旧连接刚好在请求途中被强行close掉。

3.配置含义

-Dreactor.netty.pool.leasingStrategy=lifo

-Dreactor.netty.pool.leasingStrategy=lifo是一个用于配置 Reactor Netty 连接池租赁策略的 JVM 启动参数。

具体含义:

  • reactor.netty.pool.leasingStrategy用于指定连接池中连接的租赁(leasing)策略。

  • lifo表示采用后进先出(Last In, First Out)策略来分配连接。

  • 在 LIFO 策略下,连接池中最新归还的连接会被优先再次分配使用。

为什么使用 LIFO:

  • LIFO 策略通常可以提高连接的重用效率,因为最新归还的连接更可能处于活跃状态,减少连接被关闭或失效的风险。

  • 有助于提升性能和资源利用率。

总结:-Dreactor.netty.pool.leasingStrategy=lifo配置 Reactor Netty 连接池使用后进先出策略来租赁连接,从而优化连接的重用和性能。

spring.cloud.gateway.httpclient.pool.maxIdleTime

spring.cloud.gateway.httpclient.pool.maxIdleTime 这个配置项用于配置 Spring Cloud Gateway 中底层使用的 HttpClient 连接池中,连接的最大空闲时间。

具体含义是:

  • maxIdleTime表示连接在连接池中允许保持空闲状态的最长时间。

  • 如果一个连接在连接池中空闲时间超过了这个配置的时间,连接将被关闭并从连接池中移除。

  • 这样可以避免连接长时间空闲导致资源浪费或连接失效。

通常,这个时间单位是毫秒(具体单位需要根据版本文档确认),配置合理的 maxIdleTime 可以帮助提升连接池的资源利用效率和系统的稳定性。

总结:spring.cloud.gateway.httpclient.pool.maxIdleTime用来控制 HttpClient 连接池中连接的最大空闲时间,超过该时间的空闲连接会被关闭释放。

restTemplate.config.connection.connectTimeout

restTemplate.config.connection.connectTimeout 这个配置项用于设置 RestTemplate 发起 HTTP 请求时,建立与服务器的连接超时时间

具体含义是:

  • connectTimeout表示客户端尝试与服务器建立 TCP 连接时,等待连接成功的最大时间。

  • 如果在这个时间内连接没有建立成功,连接尝试会被中断,抛出连接超时异常。

  • 该超时时间通常以毫秒为单位。

作用:

  • 防止客户端因为服务器无响应或网络问题而长时间阻塞在连接建立阶段。

  • 提升系统的响应速度和稳定性。

总结:restTemplate.config.connection.connectTimeout用来配置 RestTemplate 连接服务器时的超时时间,超过该时间未连接成功则会报超时错误。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 0:39:11

35 岁以后的运维工程师该何去何从?出路究竟在何方?

运维工程师的出路在哪里&#xff0c;尤其是 35 岁以后&#xff1f; 最近在某乎看到个问题&#xff0c;“运维的出路在哪里&#xff0c;特别是35以后?”&#xff0c; 网友 1&#xff1a;孩子快跑 打好基础&#xff0c;网络&#xff0c;安全&#xff0c;数据库&#xff0c;服务…

作者头像 李华
网站建设 2026/2/11 15:08:21

英文文献的撰写要点与实践技巧研究

你是不是也这样&#xff1a;下载的PDF堆满文件夹&#xff0c;想找的时候死活记不住名字&#xff1b;读文献时灵感一闪&#xff0c;回头却找不到记在哪了&#xff1b;写论文时&#xff0c;调整一个引用格式就要折腾半小时…文献管理不是小事&#xff0c;它直接决定了你的研究效率…

作者头像 李华
网站建设 2026/2/6 5:43:58

Agent间信任机制设计,破解跨领域协作中的安全与一致性难题

第一章&#xff1a;Agent间信任机制设计&#xff0c;破解跨领域协作中的安全与一致性难题 在分布式智能系统中&#xff0c;多个自治Agent需在无中心化控制的前提下实现高效协作。然而&#xff0c;跨领域场景下信息不对称、行为不可预测等问题加剧了安全风险与状态不一致的挑战。…

作者头像 李华
网站建设 2026/2/6 20:29:55

图形显示验证错误:新手必读指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个新手友好的教程应用&#xff0c;包含&#xff1a;1. 图形显示系统基础概念图解 2. 常见错误原因卡通式说明 3. 三步解决法教学 4. 互动式练习环节。要求使用简单的HTML/CSS…

作者头像 李华
网站建设 2026/2/5 18:58:08

1小时打造编辑分配系统原型:快马平台实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 在快马平台上快速创建一个编辑分配系统原型&#xff0c;要求&#xff1a;1) 使用自然语言描述系统需求即可生成基础代码&#xff1b;2) 包含编辑管理、任务管理和简单分配功能&…

作者头像 李华
网站建设 2026/2/6 14:26:03

比传统调试快10倍:自动化解决Chrome请求错误

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Chrome请求异常自动化处理工具&#xff0c;功能包括&#xff1a;1. 一键式错误捕获和分析&#xff1b;2. 自动测试常见解决方案&#xff08;如清除缓存、禁用扩展等&#x…

作者头像 李华