目录
本文主要讲解,在高可用和高性能建设方面一些经验和总结。
一 合理设置网络超时时间
1.1 什么叫网络调用超时时间呢?
如应用服务器之间、应用服务器与 redis 服务器之间、应用服务器与 mq 服务器之间的网络请求,这些网络请求一般有三个超时时间:
- connectRequestTimeout :客户端从连接池获取连接超时时间。
- connectTimeout:客户端与服务端建立连接超时时间。
- socketTimeout :客户端与服务端读取数据超时时间。
1.2 为什么需要设置超时时间?
由于系统的连接池或者线程池的资源是有限的,假设没有设置超时时间,由于下游服务慢或者下游服务异常,将会出现大量的线程在傻傻的等待下游服务返回,
一些正常的请求将等待或者被拒绝,服务响应变慢,吞吐率下降,QPS 变低,用户体验变差。这种情况是可以通过设置超时时间来避免的。
1.3 如何合理的设置超时时间?
简单的原则就是:socketTimeout, connectTimeout,connectRequestTimeout 3个超时时间,不要超过300ms,在系统能接受的情况下尽量短。超时时间代码实现:
HttpClient实战:连接池设置_新猿一马的博客-CSDN博客_httpclient 设置连接池一 为什么 HttpClient 需要连接池 一次创建连接是一次 TCP 进行三次握手的操作,一次销毁连接是一次 TCP 进行四次挥手的操作。采用连接池技术管理连接,连接可以得到复用,能给减少在创建连接和销毁连接所花的时间,减少服务器资源的消耗,能够达到较高的并发。二 连接池的配置public class HttpClientUtils { // 客户端从服务端...
https://blog.csdn.net/jack1liu/article/details/99697995可以根据系统的99线来设置超时时间。所谓的99线,就是满足百分之九十九的网络请求所需要的最低耗时。简单点说,假设我们这块的有一个接口一天请求了1万次,计算能保证9900次请求所需要的最低耗时就叫99线。具体计算可以参考这篇文章:


501

被折叠的 条评论
为什么被折叠?



