当前位置: 首页 > news >正文

系统性能优化

        在程序员的职业生涯中,解决当前系统问题,优化性能,是走向高阶的必经之路。如果一辈子做着后台开发,写着CRUD,QPS低于10,那确实没必要去做性能优化,因为根本用不上。性能优化范围很广,慢SQL优化,接口性能优化,功能模块性能优化,以及系统性能优化,最近一段时间刚好做完系统性能优化,就简单聊一聊性能优化。

        犹记得当年和同事谈笑,说起应对高并发流量的阿里三板斧:tair、分库分表、堆机器。直白点来讲,就是加机器资源、用缓存、优化数据库(分库分表)。系统性能优化和这差不多,只是有了资源限制。什么叫性能,通常来讲,就是处理能力和响应时长,在相同cpu和内存,甚至更少的cpu和内存情况下,如何增加系统的处理能力以及降低系统的响应时间,就是性能优化的目的。

        在做性能优化前,需要弄明白一个问题:什么消耗了资源和时间?代码逻辑执行(CPU指令执行)、数据库访问(SQL)、网络、IO、HTTP连接、dubbo调用等等,都会消耗资源和时间,耗时排序(从高到低)基本如下:数据库访问 > HTTP请求 > DUBBO调用 >代码逻辑执行。基于上述的分析,为了提升性能,就得减少DB/HTTP/DUBBO的访问,甚至是不访问,如果不访问,数据来源于哪里,这就得用到缓存,目前比较流行的缓存是Redis。

        基于上述分析,做了第一版优化,去掉了90%以上的http请求和dubbo调用,所有的原始数据存放到redis里面,业务组件直接从redis缓存取数,业务执行过程中产生的数据也存放到Redis,优化出了第一个版本

        优化完成之后,性能有显著提升,并发路数提升了近20倍,cpu和内存基本持平,但是网络带宽随着并发路数而急速上涨。为了解决网络带宽问题,通过wireshark抓包,再结合代码分析,找出频繁访问的数据,以及比较大的数据,将这部分数据从redis中取出来,放入内存中,这就是多级缓存。

在资源持平的条件下,优化之后,系统吞吐量提升了20倍左右,网络带宽降低了90%,响应时间减少了75%。对于这次的性能优化而言,核心思想就是用空间换时间。不管是引入Redis缓存还是系统缓存,以及没有展开讲的资源池化、串行改并行等等,本质上都是拿空间换时间。


http://www.mrgr.cn/news/46496.html

相关文章:

  • element表格有横向滚动条时产生错位或者偏移(火狐浏览器)
  • Notepad++上NppFTP插件的安装和使用教程
  • 昵称 校验
  • system securiry: supervisor password required
  • android刷机
  • scala基础学习(数据类型)-集合
  • minio简单使用
  • 谷歌AI大模型Gemini API快速入门及LangChain调用视频教程
  • Wasserstein距离
  • C++之multimap:关键字分类的利器
  • (Linux和数据库)1.Linux操作系统和常用命令
  • NLP: SBERT介绍及sentence-transformers库的使用
  • 基于SpringBoot的校园新闻管理系统 计算机毕业设计选题 Java毕业设计 SpringBoot+Vue 前后端分离 [附源码+安装调试]
  • MAX模型转为las点云模型
  • 响应速度相关知识
  • 汽车胶黏剂市场研究:预计2030年全球市场规模将达到67.4亿美元
  • Apache Flink 配合 Debezium 连接器来捕获 Oracle 数据库变更日志的应用
  • 图像平滑处理
  • 基于vue框架的大学生在线教育jp6jw(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • IDEA 输入英文字体变了的问题
  • 【宽搜】6. leetcode 513 找树左下角的值
  • patch函数前两个参数位
  • c++输出保留n位小数
  • 默认情况下,`QTableView`中的单元格内容是不支持自动换行的,而是将文本截断或者显示省略号。要实现内容自动换行。要用Delegate
  • 鹧鸪云光伏软件全面解析
  • Web3与人工智能的交叉应用探索