性能测试分析调优思路

我们可以通过事物的响应时间作为基础来分析:

响应时间=网络的延迟时间+应用的延迟时间+数据库的延迟时间

数据流转详细过程:

1、从客户端(负载机)发起请求,通过网络传输到Web应用服务器。

2、Web应用服务器收到请求后,不会马上处理,要找到空闲的进程/线程,再处理请求(比如说一些数据库的DML操作)

3、DML操作请求通过网络传输到数据库服务器,数据库服务器拿到SQL语句后进行语法解析、域解析,生成SQL的执行计划,根据SQL的执行计划去数据库执行这条SQL语句。如果数据在内存里面,直接从内存里面把结果集通过网络返回给应用服务器,如果这条数据不在内存里面,需要到硬盘/磁盘去找到这条数据,然后放到内存中再返回给应用服务器。

4、应用服务器拿到返回结果后,不会马上处理,需要唤起空闲进程/线程后,再进行下一步的业务逻辑处理。

5、如此循环反复,执行完成之后,再把返回结果集通过网络返回给客户端(负载机)。

整个过程包括7个阶段:

客户端→网络→中间件→应用程序→数据库→应用程序→客户端

分析步骤:

1、客户端(负载机)

  压力的发起点

  如果压测过程中发现应用程序的TPS、压力、并发上不去,第一个应该检查负载机,因为它是压力的发起点。

  负载机的性能瓶颈:网络带宽(上传下载)、CPU、内存、操作系统

2、网络

  网络错误率/丢包率

  在Linux下用sar命令查看

  更换网卡、增加带宽

3、Web服务器

  硬件:CPU、内存、磁盘

4、数据库服务器

  硬件:CPU、内存、磁盘

5、中间件

  线程池/进程池排队

6、数据库

  SQL使用是否合理

  SQL执行效率

  数据库连接池是否繁忙

7、应用程序

  JVM内存使用情况

  GC使用是否合理,是否停顿时间过长

  业务逻辑

  算法

CPU、内存、硬盘之间的关系

1、CPU

  就像人的大脑,主要负责相关事情的逻辑判断、运算以及实际处理机制

  查询指令:cat /proc/cpuinfo

2、内存

  大脑中的记忆区块,将眼睛、皮肤等收集到的信息纪录起来的地方,以供CPU进行判断

  CPU进行逻辑判断、运算的数据来源于内存

  查询指令:cat /proc/meminfo

3、硬盘

  大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些数据

  数据的最终的存储区域

  查询指令:fdisk -l

总结:

  CPU先从内存中拿数据进行处理、校验、判断,处理完之后把数据返回给内存,需要存储的东西由内存放到硬盘里面去进行处理。CPU不会直接操作硬盘里面的数据,它操作的是内存。内存是中间介质,内存足够大,内存中存放的数据就多,CPU能够直接处理的数据就更多,这样处理速度就快。

  我们用工人、车间、仓库来类比CPU、内存、磁盘。工人相当于CPU,在车间进行材料加工,车间相当于内存,车间的材料不够就要去仓库里面去取,仓库就相当于磁盘。只有车间足够大,工人才可以一直在车间进行加工,不需要取仓库取源材料,这样效率更高,速度更快。

内存与硬盘以及虚拟内存的关系

虚拟内存

  从磁盘上虚拟出来的一段地址空间当内存用,它的速度比物理内存要慢。

操作系统监控命令

 操作系统分析方向

猜你喜欢

转载自www.cnblogs.com/L-Test/p/9463628.html
今日推荐