前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能优化的几个维度

性能优化的几个维度

作者头像
春哥大魔王
发布2020-05-18 20:12:00
6780
发布2020-05-18 20:12:00
举报

性能优化有迹可循,我们可以按照不同维度进行针对性的优化,在维度划分上可以分为如下三个维度。

第一维度:应用程序层面

1. 缓存

缓存的数据结构设计很重要,没有一种数据结构是万能的。数据结构设计得越简单、单一,缓存数据的二次运算就越多。

此外,如果缓存的数据量很大,就要增加一个缓存淘汰算法,否则会白白浪费大量内存资源。

2. 异步

异步有两种方式:

线程异步。

主要用于涉及到 I/O 的地方,像磁盘 I/O 和网络 I/O;

MQ异步。

适用于更大的场景,通过 MQ 进行异步可以大大提高性能。

3. 多线程并行和分布式并行

线程不要分得太多,否则管理成本会高,分布式系统中也存在管理成本。

4. 延后运算懒加载

这个和缓存的思路相反,它适用于一些低频、运算耗时的数据。

5. 批量,合并,归并

如果要短时间内频繁地传递多个数据到同一个目的地,尽量打包到一起,一次性传输,特别是I/O 的场景。如果系统是一个单点系统,将数据打包传输的性价比会非常高。

应用程序层面的优化方式还有很多。比如,用长链接代替频繁打开关闭的短链接、压缩、重用等等。

第二维度:组件层面优化

组件是指那些非业务性的东西,如中间件、数据库、运行时的环境(JVM、WebServer)等。

数据库的调优可以分为:SQL 语句、索引、连接池。

运行时的环境调优时,对 JVM 的调优主要是调优 GC 相关的配置,对 WebServer 的调优主要是针对连接相关的调优。

第三维度:系统层面调优

借助系统层面的一些技术指标,来观测并判断程序是否正常。比如,CPU、线程、网络、磁盘以及内存。

CPU 方面,大多数情况下关注这三个指标就够了:CPU 利用率、CPU 平均负载、CPU 上下文切换。

线程方面,除了线程数之外,还需要关注一下处于“挂起”状态的线程数量有多少。数量越多,意味着程序里锁竞争越激烈,需要通过其它方案来缩小锁的粒度、级别,或者避免用锁。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档