网站首页 > 文章精选 正文
模拟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设备注册表:
- 修改注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 添加 MaxUserPort 十进制 65534
- 添加TcpTimedWaitDelay 十进制 30
- 重启系统
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
- 上一篇: Java性能调优实战:让程序跑得更快的秘密武器
- 下一篇: 聊聊JVM如何调优
猜你喜欢
- 2025-04-23 【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linu
- 2025-04-23 深入解析Java虚拟机(JVM)底层原理
- 2025-04-23 性能优越的轻量级日志收集工具,微软、亚马逊都在用
- 2025-04-23 JVM性能分析工具:Jstack
- 2025-04-23 JVM常用参数自查笔记
- 2025-04-23 Java性能调优实用指南
- 2025-04-23 常见的JVM参数配置
- 2025-04-23 JVM参数配置实战手册:从入门到生产级调优
- 2025-04-23 聊聊JVM如何调优
- 2025-04-23 Java性能调优实战:让程序跑得更快的秘密武器
- 04-23关于linux coreutils/sort.c源码的延展思考最小堆为什么不用自旋
- 04-23一文精通如何使用二叉树
- 04-23二叉树(Binary Tree)
- 04-23数据结构入门:树(Tree)详细介绍
- 04-23数据结构错题收录(六)
- 04-23Kubernetes原理深度解析:万字图文全总结!
- 04-23一站式速查知识总结,助您轻松驾驭容器编排技术(水平扩展控制)
- 04-23kubectl常用删除命令
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)