性能优化总结

1.性能优化的目标:

        1.吞吐量 2.响应速度

        吞吐量指的是 并行执行的优化

        响应速度指的是串行执行的优化,通过优化执行步骤

2.性能优化的要点:

      1.依据数据而不是猜想

      2.个体数据不可靠

      3.不要过早优化和过度优化

      4.保持良好的编码习惯

3.性能优化的指标

      吞吐量指标:QPS;TPS

      响应时间:TIME,平均响应时间

4.性能优化的方法

        性能优化分为业务优化+技术优化

        优化分类:1.复用优化 2.计算优化 3.结果集优化 4.算法优化 5.计算优化 6.JVM优化

        1.复用优化

          分为代码复用和数据复用

         代码复用指的是编码逻辑上的优化,把重复的代码提取出来,做成公共的方法。也使用使用设计模式完成代码复用和可扩展性。

        比如使用策略模式去除大量if-else

              使用责任链模式实现大量的校验

        数据复用:通常有两种方式:缓冲+缓存

             缓冲指的是写操作,作为数据的暂存,然后批量传输或者写入。实际中的例子比如操作系统的各种缓冲区;kafka客户端的缓冲区,然后批量发送;线程池的队列;消息中间件等

              缓存指的是读操作,对数据的复用。通常有本地缓存和分布式缓存

2.计算优化

    对计算结果的优化,方式有1.并行执行 2.同步转异步 3.惰性加载

   并行执行:充分利用cpu多核特性;模式分为 利用多机执行,多线程

   同步转异步:

   惰性加载:可以使用设计模式比如单例,代理等

3.结果集优化

     可以使用压缩,索引,批量,复用进行解决。

5.瓶颈

    通常容易出瓶颈的几个点:CPU,内存,I/O

    5.1CPU

        cpu称为大脑,导致CPU问题常常会有两点:一是上下文频繁切换 二是线程阻塞

       排查方式:

        1.使用top命令找到最大进程

        2.使用top -HC 找到最大线程 此时要注意:有两种情况,一是某一个线程一直占用,这说明出现阻塞情况 二是几个线程频繁飙高,这种代表上下文频繁切换,有可能线程在无限创建的可能

        3.jstack命令进行分析具体线程

          线程阻塞情况:使用命令之后可以看到具体的日志,有两种显示方式:第一是线程阻塞,这种可以找到具体的代码。第二是OOM导致的,因为GC线程和业务线程并行执行,OOM问题在下面进行分析。
         上下文频繁切换:这种需要使用jstack命令分析多个线程,判断是否是由于线程频繁创建导致。

     5.2 内存

          内存分为物理内存+虚拟内存。

          第一种内存被占用满情况,其他资源不够,比如栈空间,方法区 

           这种情况下可以使用 free命令进行查看内存使用情况。

          第二种OOM问题

          OOM问题解决思路:

          1.导出OOM日志

          2.使用工具MAT进行分析

              第一种情况大对象问题:排查直方图或者折线图。

              第二种情况内存泄漏:排查泄漏点

              第三种情况老年代频繁:通常由于年轻代参数设置不够,很多对象没有被销毁导致空间不足。

  5.3 I/O

       很多中间件的瓶颈就是I/O;即使有各种技术在降低I/O的损耗,还依旧会有这种问题。

       BIO:同步阻塞IO

       NIO:同步非阻塞IO 代表作:Netty

       多路复用:同步非阻塞IO 代表作:redis

       AIO:异步非阻塞IO

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值