程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

性能测试之网络分析

balukai 2025-04-23 22:01:11 文章精选 1 ℃

模拟io操作

boot项目 写一个get请求的接口,http 请求一次会复制一次文件到指定文件夹

打包成jar 在服务器执行jar包

nohup java -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=128m -server -Dserver.port=8087 -jar zctest.jar 'cztest' --spring.profiles.active=dev >>./test_info_8099.log 2>&1 &
  • nohup :不挂断地运行命令用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行
  • java -jar: 执行jar包
  • -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m 指定运行内存
  • -server -Dserver.port=8087 指定运行端口
  • --spring.profiles.active=dev 使用对应配置文件
  • >>./test_info_8099.log 生成日志
  • 2>&1 & 输入/输出重定向日志文件中
  • & 符号是把该命令以后台的job的形式运行

使用jmeter并发请求接口

vmstat 2 发现io的bo值,有明显的数据 ====== 有大量的写磁盘操作

mpstat -P ALL 2 看到 wKB/S 有非常大的数据, 现在的磁盘 有大量的写操作

  • mpstat -P ALL 2 2 秒获取一次所有的监控数据

未压测接口前 top的指标

压测接口后 top的指标 负载开始增加


计算机网络

常用的网络都是基于 tcp、ip协议的基础运作,http协议只是其中的一种。

  • TCP协议:通过数据发送者和接收者相互回应对方发来的确认信息,可靠的进行数据传输
  • IP协议:指定数据发送的IP信息,以及通过路由转发数据

IP数据包= tcp + ip + 帧头\帧尾


tcp三次握手 初次见面,握手(你好,你好,你好),确保数据100%准确到达


TCP 组成 : 源地址、源端口、目的地址、目的端口

  • 源地址:发起方的地址(ip)

肯定唯一,但可能不固定

  • 源端口:发起通信的端口

每一次通信,都要占用1个端口

  • 目的地址: 接收方(服务)的地址(ip)
  • 目的端口: 接收方(服务)的端口

端口开启时,发送方会分配一个端口,数据从端口出去,进入网络

端口关闭时,端口开启时间到了,会关闭端口


一个电脑最多: 65535个端口

  • 1- 1023 公认端口 21 ftp 、22ssh 、25 SMTP、80 http、443 https
  • 1024-49151 注册端口 8080 9800 3000
  • 49152~65535 私有端口 约16800个端口 默认可以使用这么多

上述这些端口对于普通用户使用,完全没有问题,但是,性能测试,就可能会有问题

在性能测试中,在发起方1台机器上,短时间,发起大量请求,占用大量端口会导致: 端门不够用 Address already in use: connect

优化方法:

  • 扩大端口范围: 1024 ~ 65535 达到6.4w端口
  • 让端口占用的时长缩短: 去掉keepalive

查看占用的端口数

linux:netstat -ano | grep "TCP" | wc -l

win:netstat -ano | find "TCP" /i /c ---/i 不匹配大小写 --/c 统计

若发起方机器,这个命令统计后的数值为约1.4w,则你本地端口成为性能瓶颈



tcp udp 区别

 相同点:tcp和udp都是传输层协议

 不同点:udp 无连接协议,大小有限制,速度快,不靠协议,易丢失

     tcp 面向连接协议,故需要三次握手 所以安全,应用广泛,可用来下载,浏览网页


接口50个并发持续压测 300s

并发场景下出现了端口被占用的错误

链接不到被测试服务器,是因为被测服务器问题导致

当前win的tcp端口数量

调优方式:

win 发起时

修改请求方式:去掉keepalive 延迟报错时间

修改win设备注册表:

  1. 修改注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  2. 添加 MaxUserPort 十进制 65534
  3. 添加TcpTimedWaitDelay 十进制 30
  4. 重启系统

linux发起请求时

查看当前linux设备的ipv4 端口:sysctl -a |grep
net.ipv4.ip_local_port_range

修改端口范围:

sysctl -w net.ipv4.ip_local_port_range="1024 65534"

生效 sysctl -p

修改过后ip端口可以达到 6.4w个端口

使用ulimit -a` 查看所有的限制

`ulimit -n` open files 打看文件数量限制 默认1024. 某一个应用程序,最多可以打开的文件数量

临时修改文件 : ulimit -选项参数 配置值 ulimit -n 2048 将打开文件数变为2048

具体参数的含义

持久化\永久性的修改: vim /etc/security/limits.conf

一般配置这两个参数:nofile文件,nproc进程

*代表任何用户


带宽问题的判断方式:

根据吞吐量和网络带宽计算网络是否有瓶颈

通过ping 服务器查看是否丢包和 未压测前的时间与在进行压测时的,时间之间有没有明显的差异


通过检查系统配置是否成为瓶颈

看具体某个进程运行打开的文件数量

  • cat /proc/PID/limits

可以通过 ulimit -n 修改打开文件数和 ulimit -u 最大并发线程数


  • cat /proc/sys/fs/file-max 查看系统允许打开的最大文件数量

查看某个进程当前已经打开的文件总数

Isof -p PID | wc -l


lsof | wc -l 查看当前系统打开的总文件数量


禁ping 命令 避免对服务器发起负载

通过下列命令修改为1

sysctl -w net.ipv4.icmp_echo_ignore_all=1

sysctl -w net.ipv4.route.flush=1

配置生效

sysctl -p


Tags:

最近发表
标签列表