iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >http各种超时配置
  • 901
分享到

http各种超时配置

httpjavanginx 2023-10-08 08:10:42 901人浏览 独家记忆
摘要

Httpclient–请求方浏览器 connectTimeOut:建立连接时间 三次握手 org.apache.http.conn.HttpHostConnectException: Connect

  1. Httpclient–请求方浏览器
    connectTimeOut:建立连接时间 三次握手 org.apache.http.conn.HttpHostConnectException: Connect to 1.2.3.4:80 [/1.2.3.4] failed: Connection timed out: connect
    socketTimeOut:链接建立成功后,数据包传输之间时间超时限制,数据包,非此次接口调用时间,一定要设置 否则长时间等待
    java.net.SocketTimeoutException: Read timed out
    connectionRequestTimeOut:从连接池获取连接的超时限制,不常用
  2. nginx–响应方服务器
    client_header_timeout:读取客户端请求头超时时间,默认为60s,如果在此超时时间内客户端没有发送完请求头,则响应408(RequestTime-out)
    client_body_timeout:同上
    send_timeout
    keepalive_timeout timeout [header_timeout]:关联httpclient连接池 重要:设置HTTP长连接超时时间,其中,第一个参数timeout是告诉Nginx长连接超时时间是多少,默认为75s。第二个参数header_timeout是用于设置响应头“Keep-Alive: timeout=time”,即告知客户端长连接超时时间。两个参数可以不一样,“Keep-Alive:timeout=time”响应头可以在Mozilla和Konqueror系列浏览器起作用,而MSIE长连接默认大约为60s,而不会使用“Keep-Alive: timeout=time”。如Httpclient框架会使用“Keep-Alive: timeout=time”响应头的超时(如果不设置默认,则认为是永久)。如果timeout设置为0,则表示禁用长连接。
    还有各种转发超时
  3. Spring Cloud各个框架超时配置
    feign :default或feignName或contextId:feign 作为最前端暴露给用户使用的,一般其超时设置相当于对用户的一个承诺,所以spring在处理这一块的时候,会有意识地使用feign的超时时间来设置后面的ribbon 和http client组件。需要注意的是:hystrix的超时处理和feign之间在当前的spring cloud框架规划中,并没有相关关系。
    feign.client.config.default.connectTimeout网络连接
    feign.client.config.default.readTimeout:数据读取
    hystrix :Hystrix的超时设置,在于命令执行的时间,一般而言,这个时间要稍微比Feign的超时时间稍微长些,因为Command除了请求调用之外,还有一些业务代码消耗。Hystrix的超时时间是站在命令执行时间来看的,和Feign设置的超时时间在设置上并没有关联关系。Hystrix不仅仅可以封装Http调用,还可以封装任意的代码执行片段。Hystrix是从命令对象的角度去定义,某个命令执行的超时时间,超过此此时间,命令将会直接熔断。假设hystrix 的默认超时时间设置了10000,即10秒,而feign 设置的是20秒,那么Hystrix会在10秒到来是直接熔断返回,不会等到feign的20秒执行结束,也不会中断尚未执行完的feign调用。
    hystrix.command.default.execution.isolation.strategy = THREAD
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 10000
    hystrix.command.default.execution.timeout.enabled = true
    hystrix.command.default.execution.isolation.thread.interruptOnTimeout = true
    hystrix.command.default.execution.isolation.thread.interruptOnFutureCancel = false
    ribbon :当feign设置了超时时间,Ribbon会依据feign的设置同步。Ribbon的这个超时时间,用于指导真正调用接口时,设置真正实现者的超时时间。Ribbon和Feign是相对独立的组件,在一个Spring Cloud框架运行环境中,可以没有Feign。那么,在这种场景下,假设Http Client客户端使用的是OKHttp,并且通过ribbon.okhttp.enabled 指定ribbon调用时,会使用ribbon的超时配置来初始化OkHttp.为了保证整个组件调用链的超时关系,一般Spring Cloud采取的策略是:依赖方的超时配置覆盖被依赖方的配置。当然这个也不是绝对的,实际上对于Feign而言,可以直接指定Feign和HttpClient之间的配置关系
    feign.httpclient.maxConnections = 200http //client最大连接数,默认200
    feign.httpclient.maxConnectionsPerRoute= 50 //每个IP路由最大连接数量
    feign.httpclient.timeToLive = 900 //连接存活时间
    feign.httpclient.timeToLiveUnit = SECONDS //连接存活时间单位
    feign.httpclient.connectionTimeout = 2000 //连接超时时间
    fein.httpclient.connectionTimeout=3000 //连接超时定时器的执行频率
    Hystrix的超时时间和Feign或者Http Client的超时时间关系
    Hystrix的超时意义是从代码执行时间层面控制超时;而Feign或Http Client 则是通过Http底层tcp/IP的偏网络层层面控制的超时。
    建议是:一般情况下,Hystrix 的超时时间要大于Feign或Http Client的超时时间;而对于特殊需求的接口调用上,为了避免等待时间太长,需要将对应的Hystrix command 超时时间配置的偏小一点,满足业务侧的要求。
    zuul
    zuul.host.socket-timeout-millis=2000 #默认1000
    zuul.host.connect-timeout-millis=4000 #默认2000

others
#断路器详细设置
#当在配置时间窗口内达到此数量的失败后,进行短路。默认20个)
#hystrix.command.default.circuitBreaker.requestVolumeThreshold=20
#短路多久以后开始尝试是否恢复,默认5s)
#hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5
#出错百分比阈值,当达到此阈值后,开始短路。默认50%)
#hystrix.command.default.circuitBreaker.errorThresholdPercentage=50%
#重试机制
#该参数用来开启重试机制,默认是关闭
spring.cloud.loadbalancer.retry.enabled=true
#对所有操作请求都进行重试
ribbon.OkToRetryOnAllOperations=true
#对当前实例的重试次数
ribbon.MaxAutoRetries=1
#切换实例的重试次数
ribbon.MaxAutoRetriesNextServer=1
#根据如上配置,当访问到故障请求的时候,它会再尝试访问一次当前实例(次数由MaxAutoRetries配置),如果不行,就换一个实例进行访问,如果还是不行,再换一次实例访问(更换次数由MaxAutoRetriesNextServer配置),
zuul请求也是通过Ribbon负载均衡客户端去调用其他服务的,ribbon客户端默认是用HttpClient来发起http请求调用,ribbon内部又会构造hystrix command来执行请求(所以我们常说ribbon的超时时间设置要大于等于hystrix 超时时间,不然导致command还没执行完,ribbon却超时了)

feign调用原理
feign调用

zuul路由拦截器

Ribbon有哪些负载均衡策略:
轮询策略
权重策略
随机策略
最小连接数策略
重试策略
可用性敏感策略
区域敏感策略

Feign和Ribbon的重试机制相当于一个双层循环,feign重试机制在外层,Ribbon的重试机制在里层,每执行一次feign的重试机制,内层的Ribbon的重试机制都会全部执行一次。Feign和OpenFeign的底层就是Ribbon,所以当项目使用了Feign或OpenFeign的重试机制,就不要开启Ribbon的重试机制,反之亦然。否则重试配置重叠,实际重试次数是二者的笛卡尔积。

ribbon的重试机制是使用RequestSpecificRetryHandler和LoadBalancerCommand来处理的,我们可以在配置文件定义参数,Spring框架会自动帮我们加载到RequestSpecificRetryHandler和LoadBalancerCommand的属性中去

feign的重试机制的实现类是Retryer,他的核心参数含义如下:
maxAttempts-最大尝试次数,默认值为5,首次请求也算一次,请求1次,重试4次。
period;-初始时间,用于参与计算线程休眠时间。
maxPeriod;-线程休眠的单次最大时间上限。
attempt;-尝试次数,每次尝试+1。
sleptFORMillis;-线程累计休眠总时间。

Spring Cloud组件那么多超时设置,我们如何理解和运用?

来源地址:https://blog.csdn.net/weixin_44123066/article/details/128356938

--结束END--

本文标题: http各种超时配置

本文链接: https://www.lsjlt.com/news/425177.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • http各种超时配置
    httpclient–请求方浏览器 connectTimeOut:建立连接时间 三次握手 org.apache.http.conn.HttpHostConnectException: Connect ...
    99+
    2023-10-08
    http java nginx
  • golang http 超时设置
    Go语言是一种支持并发编程的高效编程语言,因此它在网络编程方面表现突出。HTTP协议是构建互联网应用程序的重要组成部分,Go语言中的http包也提供了大量的接口来支持HTTP请求和响应。在进行HTTP网络调用时,超时配置对于保证程序的稳定性...
    99+
    2023-05-15
  • MySQL - 各种超时时间 - 学习与探究
    应用场景 主要用于学习与探究MySQL各种超时时间,应用在合适的场景下. 学习/操作 1.文档阅读 https://wen.geekr.dev/ chatgpt & 官方文档 & 其他资料...
    99+
    2023-09-12
    mysql 超时 会话级变量 全局变量
  • Nginx超时配置
    Nginx超时配置 Nginx主要有四类超时设置:客户端超时设置、DNS解析超时设置、代理超时设置,如果使用ngx_lua,则还有lua相关的超时设置。 1.客户端超时设置 对于客户端超时主要设置有读...
    99+
    2023-10-05
    nginx lua java
  • java中http请求之restTemplate配置超时时间(亲测有用!)
    问题:http请求发起后接收不到返回数据!!!【测试环境没出问题,发到正式环境就有问题】 项目中通过restTemplate发起请求: log.info("请求入参:{}",JSON.toJSONString(reques...
    99+
    2023-09-06
    java http servlet
  • http RequestConfig配置类中各参数的意思
    RequestConfig类是Apache HttpClient中的一个配置类,用于设置HTTP请求的配置参数。下面是RequestConfig中各参数的详细解释和代码示例: connectTimeo...
    99+
    2023-09-22
    http 服务器 java
  • nodejs http 请求超时
    Node.js是一种开源JavaScript运行时,可以在服务器端构建高效的Web应用程序。它提供了一种轻量级且高效的方式处理HTTP请求和响应。但有时候我们发现在进行HTTP请求时会出现"请求超时"的错误信息,这种情况可能发生在网络连接不...
    99+
    2023-05-16
  • OpenStack安装与配置各种问题汇总
    1,如何解决CRITICAL glance [-] AttributeError: 'NoneType' object has no attribute 'drivername'今天在配置OpenStack...
    99+
    2024-04-02
  • Keycloak各种配置及API的使用说明
    目录1.创建client2.怎样拿到access token信息 2.1采用前端登录(例如angular应用)的情况2.2 使用keycloak API3.拿到用户role...
    99+
    2023-03-09
    Keycloak配置 API的使用 Keycloak各种配置
  • golang读取各种配置文件(ini、json、yaml)
    目录viper读取ini文件viper读取json文件viper读取yaml文件日常项目中,读取各种配置文件是避免不了的,这里介绍一个能读取多种配置文件的库,viper viper读...
    99+
    2024-04-02
  • PHP文件中怎么配置超时时间
    今天小编给大家分享一下PHP文件中怎么配置超时时间的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、概要php.ini 和 ...
    99+
    2023-06-29
  • 配置php网页显示各种语法错误
    发现问题比解决问题重要,使用php集成开发环境Appserv网页会提示各种语法错误,但自己配置开发环境无法提示错误,特别当不是语法错误,比如com组件的调用,当不知道问题出现在何处,...
    99+
    2022-11-15
    配置php 语法错误
  • java中Socket设置超时时间的两种方式
    目录Socket设置超时时间的两种方式方法1方法2整理一下二者的区别设置socket超时时间的那些坑Socket设置超时时间的两种方式 方法1 调用Socket的connct 方法打...
    99+
    2022-11-13
    java Socket Socket设置超时时间 java Socket超时设置
  • php-cgi.exe - FastCGI 进程超过了配置的请求超时时限
    解决方案一: 处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题 内容转载: 处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题_php技巧_脚本之家 【详细错...
    99+
    2023-09-27
    express 前端 服务器
  • 深入理解Mysql 超时配置项
    1 JDDB超时 JDBC 是 Java 应用程序中用于访问数据库的一套标准 API 类型4驱动是通过socket来处理字节流的。如果socket超时设置不合适,类型4驱动也可能有同样的错误(连接被阻塞)。 1.2 JDBC超时层次 应用...
    99+
    2023-10-26
    mysql 数据库 java
  • SpringBoot 关于Feign的超时时间配置操作
    目录Feign的超时时间配置feign 时间设置Feign调用问题 \ 超时1、项目结构2、在其他微服务中 引入clientXX.jar3、feign调用超时Feign的超时时间配置...
    99+
    2024-04-02
  • Java超详细整理讲解各种排序
    目录稳定性直接插入排序希尔排序选择排序堆排序冒泡排序快速排序归并排序计数排序稳定性 两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排...
    99+
    2024-04-02
  • 设置接口调用超时时间的N种办法
    设置接口调用超时时间的N种办法 最近遇到调用ldap包接口需要设置接口超时时间,于是略微总结了一下java接口调用设置超时时间的方法: 1.在配置文件application.properties...
    99+
    2023-09-03
    java spring 开发语言
  • Mysql超时配置项的深入理解
    目录1 JDDB超时1.2 JDBC超时层次1.2.1 事务超时1.2.2 Statement 超时1.2.3 JDBC的socket timeout1.2.4 操作系统Socket超时2 mysql服务器超时配置2.1...
    99+
    2023-01-04
    mysql超时设置 mysql 设置超时时间设置 mysql超时配置项
  • Feign Client 超时时间配置不生效的解决
    目录Feign Client 超时时间配置不生效解决方案问题描述Feign Client的各种超时时间设置1. Feign Client Configuration2. Hystri...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作