Java后端稳定性建设最佳实践

目录

一 合理设置网络超时时间

1.1 什么叫网络调用超时时间呢?

1.2 为什么需要设置超时时间?

1.3 如何合理的设置超时时间?

二 核心和非核心业务分离

三 合理配置 tomcat 线程数

四 代码中尽量不要出现重试

4.1 为什么不要在代码中重试呢?

五 非必要依赖进行弱化处理

5.1 什么叫弱依赖化?

六 数据库事务精简

七 SQL性能优化要点

八 上线过程尽量做到平滑

九 限流、熔断、降级、排队处理异常流量

十 完善日志和监控功能


本文主要讲解,在高可用和高性能建设方面一些经验和总结。

一 合理设置网络超时时间

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线。具体计算可以参考这篇文章:

TP50、TP90、TP99的理解和使用_新猿一马的博客-CSDN博客_tp90 tp99 怎么获得一 TP50、TP90、TP99 的概念1.1 什么是 TPTP 是 Top Percentile 的缩写,中文译作百分位。1.2 什么是百分位百分位是一个统计学的术语。如果将一组数据从小到大排序,并计

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值