1.网络带宽
在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,就会造成网络资源竞争,导致服务端接收到的请求数达不到服务端的处理能力上限。
2.连接池
可用连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行),没有保持长连接,TCP 连接频繁中断
3.GC
如果堆内存分配的不合理,就会导致频繁的gc,gc会导致线程暂停。尤其是fullgc,会造成线程长时间暂停,代码故障,list 使用 contain 方法进行遍历去重,线程阻塞或者死锁
jvm 内存分配故障,fullgc 频繁,内存溢出
4.数据库配置
高并发情况下,如果请求数据需要写入数据库且需要写入多个表的时候,数据库的最大连接数不够,或者写入数据的SQL没有索引,或没有主从分离、读写分离,就会导致数据库事务处理过慢,还有数据库没加索引,db 缓存空间不足,也会影响到TPS。
5.硬件资源
包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)
6.压力机
单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,会影响TPS(这个时候就需要进行分布式压测来解决问题)
7.其他中间件
Nginx 负载均衡策略不当,压力分配不均
Redis 瓶颈。hash 未合并,缓存被击穿,单条命令耗时过长
8.硬件资源中CPU和内存
服务器资源不足,上下文切换过快,中断过高,swap 交换频繁
压力大的时候tps频繁抖动,导致总tps上不去。查看是否有fullgc(tail -f gc_mSrv1.log | grep full)
pacing设置太小也会导致tps上不去,对抖动大的交易多增加点用户即可。
tps抖动,单压抖动大的交易,发现很平稳,这时怀疑是不是压力太大导致,所以发容量的时候把压力最大的那只交易分到其他压力机,然后发现tps不抖动了。注意:多台压力机只影响tps抖动,不会影响服务器的cpu。看响应时间有没有超时,看用户数够不够。
标签:sir,多测师,抖动,数据库,tps,内存,TPS,杭州,连接池 From: https://www.cnblogs.com/xiaoshubass/p/17146837.html