系统性能指标与调优思路——常用的性能调优方法

在明确性能指标后,我们针对这些性能指标,需要选择一些方法来提升系统性能。

缓存

缓存通常需要用空间换时间,在击中率较高的情况下,缓存通常能提升系统性能,这一句话从反面来看,即如果无法保证热点击中的频率,那么缓存反而是一种不好的策略。因此,使用缓存有一定的限制条件。

有以下几种场景会使用到缓存:

对于一个web应用来说,浏览器会有缓存,cookie或者session,cdn等。后端则有本地缓存、分布式缓存。

对于计算量比较大的一些结果,如果结果是固化的或者短期内不变,我们往往也会采用缓存的方式进行存储。

在重复创建、销毁等过程开销较大的,我们也会通过单例资源池等方式来进行缓存换取性能。

批量

典型的一个应用就是jdbc的addBatch批量操作模式,通常采用这种方法比循环调用insert的性能甚至可高达数十倍。
这种思维的应用并不局限在jdbc的操作,其实在网络IO、磁盘IO、前端资源的压缩与合并,都是这种思维的表现。

Lazy

在计算机领域中,这个概念出现的挺多的。Lazy loading、Lazy Initialzing、Lazy evaluation等,这里体现的一个非常重要的优化思想:把任务推迟到必须的时刻。
由于Lazy思维在编码过程中运用较为广泛,后续会专门讲解。

并发

通用的手法就是开多线程、多进程、扩充机器。
无状态的服务,采用集群就能很好伸缩。
如果是有状态的,一种是扩充多节点,每个节点提供一样的数据,或者是每个节点各自提供部分数据。mysql的读写分离是前者,redis的分片则属于后者。

你可能感兴趣的:(JVM)