本章主要知识点:
- 影响系统性能的因素
- 性能指标
1. 影响系统性能的因素
1.1 最有可能成为系统瓶颈的计算机资源:
-
磁盘IO:磁盘相比内存来说,存储空间要大很多,但磁盘 I/O 读写的速度要比内存慢很多,虽然目前引入的 SSD 固态硬盘已经有所优化,但仍然无法与内存的读写速度相提并论。
-
网络情况:网络对于系统性能来说,也起着至关重要的作用。带宽过低,对于传输数据比较大,或者是并发量比较大的系统,网络很容易成为性能的瓶颈
-
CPU:有的应用需要大量计算,他们会长时间、不间断地占用CPU资源,导致其他资源无法争取到CPU而响应缓慢,从而带来系统性能问题。例如:代码死循环,频繁FULL GC,多线程频繁上线问切换等。
-
异常:对于Java来说抛出异常需要构建异常栈,对异常进行捕获和处理,这个过程非常消耗系统性能。如果在高并发的情况下引发异常,持续地进行异常处理,那么系统的性能就会明显地受到影响。
-
数据库:大部分系统都会用到数据库,而数据库的操作往往是涉及到磁盘I/O 的读写。大量的数据库读写操作,会导致磁盘 I/O 性能瓶颈,进而导致数据库操作的延迟性。对于有大量数据库读写操作的系统来说,数据库的性能优化是整个系统的核心。
-
锁竞争:锁竞争会明显增加上线文切换的开销
-
内存大小:Java程序一般通过JVM对内存进行管理,主要是用JVM中的堆内存来存储Java创建的对象。系统堆内存的读写速度非常快,所以基本不存在读写瓶颈。但是内存成本比较高存储空间有限,所以当内存空间被占满时,对象无法回收,就会导致内存溢出和内存泄漏问题。
1.2 木桶原理
木桶原理,即短板理论,其核心思想是,一只木桶能盛多少水,取决于木桶上最短的那块木板。
木桶原理.jpg
同样,系统的最终性能取决于系统中性能最差的那个组件,因此为了提升系统性能,必须有针对性的对性能最差的那个组件进行优化。
2. 性能指标
程序的性能是通过以下几个方面来体现程序性能指标:
-
响应时间
响应时间是衡量系统性能的重要指标之一,响应时间越短,性能越好,一般一个接口的响应时间是在毫秒级。
系统的响应时间可分为:数据库响应时间(数据库操作所消耗的时间)、服务端响应时间、网络响应时间、客户端响应时间 -
吞吐量
系统接口的TPS即每秒事务处理量,因为 TPS 体现了接口的性能,TPS 越大,性能越好。
在系统中,我们也可以把吞吐量自下而上地分为两种:磁盘吞吐量和和网络吞吐量。 -
计算机资源分配使用率:
主要有:CPU 占用率、内存使用率、磁盘 I/O、网络 I/O 来表示资源使用率.
-
启动时间:
程序从运行到可以正常处理业务需要启动的时长
-
负载承受能力:
当系统压力上升时,系统的执行速度、响应时间的上升曲线是否平缓
网友评论