架构篇-一分钟掌握性能优化小技巧

  • 不同角色的性能反馈

客户:你们的网站/APP点了下在那一直转圈圈,一动也不动! 怎么这么慢,这么卡啊!

领导: 这个接口怎么等待这么长时间才会返回数据? 都3秒了!为啥我们网站最大并发量这么少?

运维:你程序报OOM异常了! 你程序干啥了,CPU都100%了!

一开始运行得好好呀,这是咋滴了! 作为程序员的你,是不是一脸懵圈!

  • 提取关键性能指标

响应时间、吞吐量(QPS)、系统负载,资源利用率(cpu,内存,磁盘,带宽)

  • 如何进行性能分析?

检查请求处理的各个环节的日志,分析哪个环节响应时间不合理,然后检查监控数据,分析影响性能的主要因素是内存、磁盘、网络、还是CPU,是代码问题,还是架构设计不合理,或者系统资源确实不足。

1). 查看代码执行耗时工具:Arthas中的trace命令

2). 查看系统负载,资源利用率; 相关命令:w/top,free,df

  • 性能优化策略

Web前端性能优化

  • 减少HTTP请求数, 主要手段: css/js文件合并,多张矢量图合并
  • 使用浏览器缓存,主要手段:设置HTTP头中的Cache-Control和Expires的属性
  • 启用压缩,主要手段:Nginx启用Gzip
 # 开启gzip
  gzip on;
  # 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
  gzip_min_length 1k;
  # gzip 压缩级别 1-10 
  gzip_comp_level 2;
  # 进行压缩的文件类型。
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  # 是否在http header中添加Vary: Accept-Encoding,建议开启
  gzip_vary on;
  • CSS放在页面最上面、JS放在页面最下面
  • 减少Cookie传输,主要手段:对于某些静态资源的访问根本不需要cookie,可以考虑使用独立域名访问
  • 静态资源使用CDN加速

应用服务器性能优化

  • 优先考虑使用缓存,需要注意如何保证缓存数据一致性?能删缓存时不要去更新缓存。
  • 异步处理,一些非核心业务逻辑,可以使用消息队列,线程池进行异步操作。
  • 集群化部署,当一台服务器负载压力过大响应慢时,可考虑集群化部署提高性能。

存储性能优化

  • 数据库:建立索引,读写分离,分库分表
  • 缓存:读操作走slave节点,写操作走master节点。字典数据可以做预热处理。
  • 性能检测方法
  1. 最简单最常用的方法:postman请求一把,看看响应是不是快了。
  2. 性能测试: 用jmeter对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。
  • 总结

性能优化,不是出现问题才去做的,而是实时想着去做。既能提高技术,又能解决问题,何乐不为!

相关文章

14条前端性能优化的规则(14条前端性能优化的规则是什么)

规则01:尽量减少HTTP请求前端优化的黄金准则指导着前端页面的优化策略:只有10%-20%的最终用户响应时间花在接受请求的HTML文档上,剩下的80%-90%时间花在为HTML文档所引用的所有组件(...

孤岛架构:前端性能优化的终极答案?

当用户在3G网络下打开一个电商首页,传统SPA框架需要加载1.2MB JavaScript才能交互,而采用孤岛架构的页面已在1.8秒内完成首屏渲染——这不是技术噱头,而是2025年Web开发的真实性能...

来,教你一个前端代码优化的新方法,好使

摇树优化Tree Shaking是Webpack里非常重要的优化措施,它的优化效果在Webpack 5中又得到了进一步的提升。Tree Shaking可以帮我们检测模块中没有使用到的代码块,并在Web...

性能优化,前端能做的不多(前端如何做性能优化)

关于前端性能优化的困惑前端性能优化是前度面试常考的问题,答案说来复杂,其实总结下来就是:减少或拆分资源 + 异步加载 现在都搞成八股文了,面试之前背诵一下。还有缓存。但纯前端的缓存其实作用不大,使用场...

前端性能优化,你想知道的都在这里

1. 构建速度优化使用 webpack5 持久化缓存,能明显提高构建速度,webpack4可以使用cache-loader使用 lazyCompilation 可以懒编译,能明显提高开发构建速度约束l...

网站性能不佳?试试这十大前端性能优化技巧!

1. 减少 HTTP 请求的数量和大小,合并、压缩、缓存静态资源,避免重复请求和无用请求。以下是一个使用 Node.js 和 Gulp 自动化构建工具来合并、压缩和缓存静态资源的示例:1. 安装 Gu...