性能测试基础

1、计算机相关的知识。

  • 计算机由硬件+软件构成: 

  硬件:一般来说,和性能有关的主要有以下几个:

  CPU:一般来说,CPU的忙碌程度就反应了当前系统中所执行的任务的多少和执行速度的快慢。

  内存:内存分为两种:物理内存和虚拟内存。

  物理内存:内存条所提供的,读写速度快。
  虚拟内存:是从磁盘中划分出来的,读写速度慢。

  系统原则:物理内存足够是不会去使用虚拟内存的。

        针对内存,当前最大的问题一般都是oom(out of memory)。
        不是所有的oom都是由内存泄漏引起。
  内存泄漏:是指应用没有及时(没有)释放所占用的内容,导致可用内存越来越少。

  磁盘:持久化存储的。
     一般只需要关心一下磁盘本身的物理性能即可。
     一般通过一些通用的工具可以进行检测。

  网卡:限制的是本机和其他机器进行交互的网络带宽的最大值。

  软件:一般来说,软件分为操作系统、系统软件、应用软件。

  操作系统:os,常见的就是windows和linux
      服务器一般都采用linux。

  系统软件:一般都是由操作系统提供,用于系统管理等。

  应用软件:面向用户的软件,或者说是非系统必须的。


2、计算机网络:
计算机网络通信是和两个模型有关。
OSI模型:开放式系统互联模型。
是一个理论模型、参考模型,提出了网络通信的设计模型、原理等。
但是它本身没有给出具体的解决方案。
将网络分为七层:定义了网络间通信的基础方案:
层层封包:从上往下(发送)
层层解包:从下往上(接收)

  • OSI模型七层:

    应用层:
    表示层:
    会话层:
    传输层:负责数据的传输
    网络层:设定IP、建立IP地址和mac地址的映射。
    数据链路层:建立物理设备和mac地址的映射关系的。
    物理层:不是指计算机,而是指网络适配器(即网卡)。


tcp/ip模型:tcp/ip协议簇。
本质上就是根据osi模型实现了大量的协议,来完成每一层的数据的封包和解包工作。

  • tcp/ip模型分为四层(五层):  应用层: 应用层、表示层、会话层(常见的应用层协议有:http

、https:http+ssl)

  传输层:tcp、udp
      tcp:面向连接的,可控的,有序的。
      udp:面向无连接的,不可控,无序。

      tcp:三次握手,用于连接的建立。
        1A:SYN、ACK
        2B:SYN、ACK+1
        3A:SYN、FIN

      tcp:四次分手、用于连接的断开。
        1A:SYN、ACK、FIN
        2B:FIN、ACK+1
        3B:SYN、ACK、FIN
        4A:FIN、ACK+1

  网络层:IP协议、ARP、RARP协议等 

  网络接口层(数据链路层+物理层):   

      mac地址:全球唯一的网卡的物理地址。

2.1 应用的基础架构模型:
目前来说,所有的网络应用的架构都是来源于基础的三层架构:

  • client:客户端、是指客户端程序。
  • server:服务器、是指安装了服务器应用程序的机器。

    服务器最大的作用其实是隔离用户和数据。
    在web应用中,服务器又分为:

    web服务器

    应用服务器:又叫中间件。
    PS:现在很多公司都会加入redis,实现服务器端的缓存读写,主要是为了提升性能。

  • database:数据库。

三层架构的设计本身就是支持水平扩容,即支持分布式部署和扩容的。

 

客户端:
  客户端是用来和用户进行交互的。
  客户端是用来接收和处理用户的输入的。
  按照程序的设计,将用户输入(文本、动作)封装为数据包发送给服务器。
  接收服务器的响应,然后解析响应并且展示结果给用户。

  一般来说,根据客户端的不同,我们的应用又分为:
      B/S应用:browser/server、web应用
      C/S应用:client/server、具有专有客户端的应用。
      app:移动app。本身具有b/s和c/s的特性。


浏览器作为B/S应用的客户端而言,性能主要是由两个要素决定:
  浏览器的内核:
    ie内核:ie等
    webkit:chrome、safari等
    gecko:firefox浏览器

  js引擎:
    v8
    查克拉

  PS:影响性能的同时,也和兼容性测试有关。


服务器:在web应用中,服务器分为两种:web服务器、应用服务器。
  web服务器:
    面向用户的、面向客户端。
    接收客户端的请求。
    处理客户端的请求(转发、调用的方式)。
    返回处理的结果给客户端。
    常见的web服务器产品有:
      apache(httpd)
      iis
      tomcat
      lighttpd:
      nginx:

  应用服务器:
    不是属于必须的部分,是从web服务器中独立处理的一部分。
    是用来模块化处理一些复杂的业务逻辑、并且提供接口给web服务器。
    是面向数据库的、也不会直接和客户端进行通信。
    常见的应用服务器有:
      iis
      tomcat
      jboss
      weblogic
      websphere

      主流组合:nginx+tomcat


数据库服务器:
  用于存储数据的。
  目前主流的数据库有两种:
  关系型数据库RDBMS:
    oracle
    mysql
    ms sql
    postgreSQL
    db2

  非关系型数据库(noSQL):not only SQL
    mongoDB

 

集群:集群的目的是为了实现:
负载均衡:
  通过技术手段,使得上游来的负载(请求)按照特定的方式分配给下游的服务器。
  常见的基础的负载均衡的策略:
轮训(轮询):
  实时、动态分配:一般都是要由前置机来对后端的服务器进行性能监控,根据设置的性能指标来动态分配请求。
  基于IP分配:负载均衡用户。

故障转移:通过备份的方式来实现故障转移。


云计算:
  以前对于云计算是从技术角度来讨论。
  现在对于云计算更多的是从商业模式来讨论。
    SAAS:软件即服务
    IAAS:设施即服务
    PAAS:平台即服务

 

posted @ 2020-06-04 16:44  沫笙*  阅读(142)  评论(0编辑  收藏  举报