服务器架构和网络性能瓶颈分析

一、服务器的组成

1、服务器的类型

硬件服务器:性能好,价格贵,一般大公司,巨型项目会使用

云服务器:价格便宜,根据自己的需求进行调整服务器,如阿里云、腾讯云,目前使用最多

虚拟机:一般公司不会使用虚拟机作为项目的服务器,除非测试环境中,用于测试验证。性能最差。

2、硬件

硬件:CPU、内存条、磁盘、网卡

一个HTTP请求发送到服务器:先到网卡,网卡没有存储功能,会在内存的网络缓冲区暂时存储,然后通过总线告知CPU有网络数据来了,CPU再进行执行指令。
操作系统代码指令+数据是存储在磁盘里的,当网卡有数据来了,会把数据和指令加载到内存中,CPU从内存中读取对应的指令去执行。

一个请求过来服务器,会跟哪些部分有关系呢?

  • 网卡(网络带宽不够)
  • 内存(空间不足)
  • CPU(资源不足)
  • 磁盘(空间不足、读写速率不够)

3、软件

应用软件:为实现用户需求开发定制的功能软件,如:淘宝、微信等。

  • 应用程序基于操作系统上运行的,作为一个进程运行
  • 测试对象:应用软件

进程和线程的区别
进程:是操作系统层面,管理应用程序的一种单元,程序运行是以进程方式运行的

  • 每个进程占用一个网络端口,如:8080、9100、9090、3000、8086等,操作系统通过这些端口(网络数据会携带端口请求),区分是哪个进程要处理哪些请求
  • 端口是传输层端口,TCP、UDP端口,每个端口唯一标识一个进程,所以端口不能重复被占用
  • 进程运行起来后的一些代码和数据是加载到内存里的(内存属于磁盘和CPU之间的桥梁)
  • 每个进程运行起来之后,都需要分配一块内存,如果内存空间不足,进程就无法正常运行

进程是操作系统层面管理程序运行的单元,申请内存区域,绑定端口,代码指令加载等操作都必须在进程层面来实现

线程:本质上可以说一种更加轻量级的进程,一个进程可以管理多个线程,进程最终的数据是由线程来管理的。

  • 线程可以由应用程序自己内湖控制,同一个进程内的多个线程共享内存资源使用
  • 线程是没有端口的,一个进程下面有多个线程共享进程的端口号
  • 线程可以作为操作系统层面的单独调用的资源,操作系统会把指令和数据以线程为单位分派给CPU去处理执行
  • java项目一般都是以多线程来处理的
线程与进程的区别?

* 进程是操作系统层面管理程序运行的单元,程序是以进程方式运行的。申请内存区域、绑定端口、代码指令加载等操作,都必须要在进程层面来实现的

* 线程本质伤可以说是一种更加轻量级的进程,一个进程可以管理多个线程,进程最终的数据是由线程来管理的。线程可以由应用程序自己内部控制,同一个进程的多个线程共享端口和内存资源使用。

二、网络性能分析

请求和响应是通过网络进行传输的,如果发送的数据大于网络带宽,那么久会造成网络阻塞,从而形成网络瓶颈,所以我们需要在性能测试过程中,学会如何分析目前的性能测试环境里是否有网络瓶颈。

如果有网络的瓶颈,性能指标存在:

* TPS上不去:因为数据没有到服务器,服务器不能处理很多事务
* CPU/内存使用率不高:因为数据没有到服务器,不会消耗服务器的CPU和内存
* RT响应时间:很长

存在以上的指标问题,可能是网络瓶颈问题,但是也有可能是其他问题,需要具体分析

2.1 网络检测工具

iperf3:检查网速工具,是开源的网络性能测试工具,支持win、linux、mac平台,测试两个服务区之间的带宽速度的。

yum install iperf3

# 服务器和客户端都要安装,启动服务端,客户端可以发送指令测速

测试方法:

1)服务器启动

  • iperf3 -s ,启动成为服务器,默认占用段偶5201

  • 参数,-s:表示服务器,-p:定义端口,iperf3 -s -p 5202;-i:设置每次报告之间的时间间隔,单位秒

2)客户端启动

  • 常用参数
    -c:表示服务器端的IP地址

    -p:表示服务器的端口号,如果服务器修改了端口,这里必须带上端口,默认的可以不加

    -t:可以指定传输测试的持续时间,iperf在指定的时间内,重复发送指定长度的数据包,默认是10s

    -i:设置每次报告之间的时间间隔,单位秒;如果设置为非零值,就会按照这个时间间隔输出测试报告,默认是1s

    –logfile:输出的测试报告存储至文件中

    -J:输出json格式测试报告

    -R:反向输出,client负责发送数据,server负责接收,如果需要测试下载速度,则用-R

测试:iperf3 -c 192.168.16.130 -t 10 -i 1 【客户端160,向服务器161 发送数据,每隔1s发送一次请求,总共10s】

2.2 网络监控工具

iftop【interface top】:查看网络实时流量的工具,可以看到是谁占用了服务器的网络。

yum install -y iftop 
# 在被测服务器上安装

  • => <= 代表网络流量的流转方向
  • TX 表示发送的总流量
  • RX 表示接受的总流量
  • TOTAL 表示总流量
  • peak 表示每秒流量的峰值
  • rates 分别表示过去2s 10s 40s的平均流量

三、网络性能分析和瓶颈调优思路

  • 第一步:通过iperf3工具,测试服务器的网络带宽

  • 第二步:压测观察网络使用情况的指标,跟服务器的带宽做对比;避免其他程序干扰的话,可以结合iftop工具实时监控【可以直接使用Prometheus直接对比;聚合报告对比需要换算下单位】

  • 第三步:如果网络带宽用完了,说明可能存在网络瓶颈

      -- 观察系统资源是否使用完成,如果其他资源利用率不是很高,网络带宽用完了,TPS上不去,就基本上是网络瓶颈问题
      --如果其他的资源消耗完成,可以花钱升级机器,或者优化程序代码,优化完成后,再关注网络瓶颈问题
    
如果有网络瓶颈,应该怎么优化?

1. 提高性能测试环境的网络带宽,公司网络由两个部分决定:运营商的网络带宽+设备硬件网卡
2. 向运营商购买带宽
3. 更换设备网卡:10Mbps 100Mbps 1000Mbps,现在很多服务器都是万兆网卡或者千兆网卡,网卡本身的瓶颈是很少的
4. 优化程序:压缩数据传输的大小,比如响应消息字段设计简化;减少不必要的数据传输,不要的字段不返回传输
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值