springcloud 项目性能优化,让你的项目飞起来

前言

Spring Cloud 项目性能优化的意义在于提高系统的并发处理能力(简单的说就是花小钱办大事),保证系统的稳定性和可靠性。要做到高并发,需要做不少的优化,本文分成几个方面分布说明


持续更新,敬请关注

springcloud 项目优化方式:

一.mysql优化(索引、减少返回字段)

  1. SQL语句优化:
    1)使用精确查询,避免模糊查询;
    2)使用联表查询,避免使用子查询;
    3)使用最少字段返回,避免使用select *;

  2. 字段类型选择最适合的类型

  3. 合理创建索引、联合索引

  4. 热点数据使用缓存

  5. 不要使用游标,不要使用存储过程

  6. 配置主从、读写分离

  7. 分库分表

  8. 硬件优化:
    1)将机械硬盘换为SSD;
    2)增加CPU的核数;
    3(增大内存。

  9. 参数配置优化:
    1)例如增加innodb_buffer_pool_size的大小;
    2)增大 redo log,减少落盘次数:innodb_log_file_size 设置为 0.25 * innodb_buffer_pool_size;
    3)关闭不必要的日志:通用查询日志、慢查询日志可以不开 ,binlog 可开启;
    4)写 redo log 策略 innodb_flush_log_at_trx_commit 设置为 0 或 2:对于不需要强一致性的业务,可以设置为 0 或 2
    0:每隔 1 秒写日志文件和刷盘操作(写日志文件 LogBuffer --> OS cache,刷盘 OS cache --> 磁盘文件),最多丢失 1 秒数据
    1:事务提交,立刻写日志文件和刷盘,数据不丢失,但是会频繁 IO 操作
    2:事务提交,立刻写日志文件,每隔 1 秒钟进行刷盘操作

二.启用压缩(nginx与微服务调用压缩)

nginx启用gzip压缩可以极大提供传输效率,一个5m的数据可以压缩大原来的1/10。
查看是否启用gzip压缩步骤如下:
打开chrome f12开发者工具,勾选 content-encoding
在这里插入图片描述
在这里插入图片描述
勾选左上角 “使用大量请求行”,可以看到每一行压缩前后的体积:
在这里插入图片描述

三.代码优化(同步改成异步、缓存)

  1. 使用合适的数据结构和算法:选择合适的数据结构和算法可以显著提高程序的性能。例如,使用哈希表进行查找操作比使用数组或链表更高效。
  2. 减少对象创建和销毁:频繁的对象创建和销毁会导致内存碎片和性能下降。尽量重用对象或者使用对象池来减少对象的创建和销毁。
  3. 使用缓存:将经常访问的数据存储在缓存中,以减少对外部资源的访问次数。可以使用本地缓存(如HashMap)或者分布式缓存(如Redis)。
  4. 优化循环:避免在循环中进行不必要的计算,将循环不变量提取到循环外部。
  5. 使用位操作:对于整数类型的操作,使用位操作(如位移、按位与、按位或等)代替算术运算(如加、减、乘、除等),可以提高性能。
  6. 尽量使用短事务。
  7. 尽量避免随意使用静态变量:某个对象被定义为 static 变量所引用,那么 GC 通常是不会回收这个对象所占有的内存。
  8. 尽量避免使用二维数组:二维数据占用的内存空间比一维数组多得多,大概 10 倍以上。
  9. 对于常量字符串,用 ‘String’ 代替 ‘StringBuffer’

四.jvm调优

五.多线程并行计算减少响应时间

六.采用支持横向扩展的组件以集群提高服务

七.使用线程池提高资源的利用率

总结

部分内容参考文章:
https://mp.weixin.qq.com/s/t8WoujO5M8EnTLUsAP7Hkw
https://zhuanlan.zhihu.com/p/641812413

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值