吞吐量达到瓶颈后下降_性能优化四-吞吐量

说明:以下所有的指标都是在线服务,对于离线服务本人不熟悉.

吞吐量优化通常是在耗时能够满足业务需求的情况下进行优化,不能说单机可以处理1wqps,结果请求rt或者99线达到10s,这样肯定不行.

吞吐量的瓶颈有可能是服务本身容易达到瓶颈,下游服务容易达到瓶颈.

1.下游服务达到瓶颈

下游服务可能是db,mq,业务服务等等等架构上支持水平扩容,那么这就变成了钱的问题,加机器就完事了.

不支持水平扩容:数据库连接数已经快满了,这样就不能单纯的扩容了,此时可以进行业务的垂直拆分,把一部分业务拆分到独立的集群中.同时进行DB的拆分,这样可以降低DB的负载.

读写分离:让对数据的实时性不敏感的读请求 访问slave,避免所有的请求落到主库压力过大.或者通过CQRS架构,将query请求直接通过es检索.

业务垂直切分:把一个服务分为多个服务,服务功能保证聚合,这样是向微服务的方向发展。

2.服务本身达到瓶颈

服务本身达到瓶颈的原因比较多,可能是cpu,磁盘或者网卡达到瓶颈,这些依赖于服务的类型.或者由于代码有些问题,导致程序不能充分利用资源.一下说明单纯从技术角度分析,不涉及业务流程,每个业务的业务流程都不一样,能够优化业务流程比单纯的优化代码通常效果更好.cpu先达到瓶, 针对cpu的优化很多,对于web后端来说,上下文切换和各种伪共享是其中的一个比较主要的优化点工具:perf,火焰图,top等

引起上下文切换的原因:IO等待,锁等待等,可以优化IO模型(通常被底层框架封装,比较难以优化),优化锁等待通常会减少锁的力度,分片锁,无锁结构

磁盘瓶颈:对于hdd来说,因为有寻址等开销,通常会通过顺序写入数据来提升吞吐量,比如kafka和mysql. 对于ssd来说,本人不清楚,不多费口舌

网卡瓶颈: 可以尝试开启网卡多队列,提升网卡的性能. 如果业务上能进行网络数据的压缩,减少网卡的压力,也能够提升吞吐量.

业务优化下面说的都比较笼统:

1.空间换时间:

手段:用kafka堆积数据,进行消峰

2.时间换空间:

3.批量处理:批量更新,批量删除等等

4.减少业务请求:具体业务具体分析

5.资源池预加载:对象池,线程池

6.配置优化:java gc优化,php代码解析缓存优化等等

7.缓存优化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值