【性能测试常见问题及压测前须知】超详细!!!

性能测试小知识

1、评估当前宽带下允许最大并发量:

比如一个网页请求响应大小是120K,服务器宽带是100M,那么大概能支持80个并发(计算方法是:100×1024÷8×75%÷120=80),

其中除以8是因为宽带和文件大小单位不一样,宽带以bit为单位,文件以Byte为单位(1Byte=8bit),乘以0.75是因为,为保证服务器访问正常,

要预留一定宽带,不能按最大计算。

2、单台机器有效测试并发量计算(单台机器支持最大并发量546个/S,所以正常情况下,并发数应该在500以内):

① 理论上,一个系统端口数量是65536个

② client发起一个请求时,系统会分配一个闲置的端口供使用,一个端口同时只能被一个服务使用

③ 一个tcp协议从断开到系统完全释放端口的时间大概是2分钟左右

综合以上3条,我们可以计算出:

理论上单台测试机器,性能测试每秒钟支持最大有效并发数是:546=65536/2/60,除去系统本身占用部分接口,所以并发数应该控制在500以内

3、性能测试N+1方法:

所谓N+1的方法是指,性能测试时,可以在压力测试机器外增加一台空闲的机器在压力测试时,手动发送请求,其中的N是压力测试机器的请求,

1是闲置机器发送的请求,这样测试能更贴切高并发时用户的体验,也容易发现一些问题。

4、125原则:

即客户端发送请求到服务器应答完成接受的时间:

1S以内,用户会感觉系统响应好快,体验很好;

2S-5S以内,用户会感觉系统的响应速度还可以;

5S以上,用户会感觉系统响应很慢,体验很差,用户很容易不在访问页面。

性能压测过程中常见连接错误分析

1、在压测过程中报错:连接超时(ConnectTimeout)

产生原因:

1)、可能是压测工具本身有连接超时设置引起

a)、如在Jmeter http请求 页面,advanced 页签, 有 timeout 设置,可以对发送请求和返回请求进行超时设置,如把 connect 和 response 端都设置为 30 000 (30s);

b)、如在Jmeter 的 jmeter.properties 中:httpclient4.idletimeout = 30000 (延迟 30 s,一般设置为 10 - 60 s )

2、可能是服务端存在连接超时问题

a)、先分析一下压测接口的数据链路

b)、根据链路来一步步分析每层可能出现的连接超时情况,如Nginx,mq,redis,微服务,数据库每个层面都会可能出现连接超时的情况

2、在压测过程中报错:连接被拒绝( Connection refused)

1)、首先检查网络和服务器状态,排除物理连接问题

2)、高并发时有些接口会有限流操作,还有的请求在介入层Nginx就可以进行限流(nginx_http_limit_conn_Module),然后请求连接就被拒绝了

3)、有些中间件如 Tomcat,有最大等待数设置,如 accept-count 值。acceptCount是能够接受的最大等待数,当等待队列被放满了,这时当再来新的请求时就会被 Tomcat 拒绝。

4)、对于数据库,如mysql,mongoDB等有个最大连接数,如果请求超过最大连接数,也会拒绝请求。

3、在压测过程中报错:连接被重置(Connection reset)

1)、笔者在压测实战中,有遇到过连接被重置的情况,后面发现是因为压测网络的域名出现了问题,找运维解决好后就好了。

2)、可能是服务端和客户端的连接方式不一样,需要同时使用相同的连接方式如长连接或短连接。

3)、HTTPS协议,可能存在TLS版本不一致情况,把服务端和客户端使用相同的TSL版本

4、在压测过程中报错:Socket closed

1)、原因分析:Linux 服务端的连接数默认为1024,设置小了,对于高并发时,明显不够

修改 三个参数 vim /etc/sysctl.conf

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

修改后 sysctl -p

5、在windows下用 Jmeter 做压力测试时,报错:java.net.BindException: Address already in use: connect。

原因:windows提供给TCP/IP链接的端口为 1024-5000,需要3-5分钟来循环回收它们,这样就会导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。

解决办法(在jmeter所在服务器操作):

1)、cmd中输入regedit命令打开注册表;

2)、在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右键Parameters;

3)、添加一个新的DWORD,名字为MaxUserPort;

4)、然后双击MaxUserPort,输入数值数据为:65534,基数选择十进制;(多增加端口号)

5)、完成以上操作,务必重启机器,配置才能生效

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
性能测试中的多线程压测是通过同时模拟多个用户并发访问系统来评估系统的性能表现。多线程压测可以模拟真实的用户行为,通过同时发送多个请求来测试系统在高负载情况下的性能表现。 在多线程压测中,可以使用工具如JMeter来创建多个线程,并设置每个线程的并发访问数量。每个线程代表一个用户,可以设置不同的用户行为和请求参数。通过同时执行多个线程,可以模拟多个用户同时访问系统的情况。 在压测过程中,可以监控系统的响应时间、业务成功率、CPU使用率、内存使用率等指标来评估系统的性能。可以使用工具如InfluxDB和Grafana来实时监控和分析压测结果和服务器性能。这些工具可以提供美观易用的界面,并且可以异步地监控服务器性能,减少对服务器性能的影响。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [性能测试—接口压测指标分析](https://blog.csdn.net/sanmi8276/article/details/110182515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Jmeter多线程并发和压测结果分析](https://blog.csdn.net/p302519898/article/details/127258136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气大白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值