谷粒商城十二性能压测
创始人
2024-03-14 22:00:33
0

在分布式开发中,我们将每一一种服务都抽取成一个独立的模块,微服务模块在真正的上线之前,甚至是上线以后,我们都要进行压力测试,才能投入正常的使用。

压力测试是为了我们的系统在当前软硬件环境下,最大的负荷量,也就是系统瓶颈。

知道了系统瓶颈,就可以通过一些负载均衡配置,避免给系统在单位时间内发送太多的请求,导致系统被压垮,以至于宕机。

同时压测也是我们优化的一个重要手段,使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是:内存泄漏,并发与同步

  • 内存泄漏:调用的接口在一个很多次的循环内不断的创建对象,当并发达到百万的时候,就会创建很多对象,以至于内存撑爆

性能指标

  1. 响应时间(Response Time: RT)
    响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。

  2. HPS(Hits Per Second) :每秒点击次数,单位是次/秒。

  3. TPS(Transaction per Second):系统每秒处理交易数,单位是笔/秒。
    可以理解为一个事务,不仅仅是数据库的事务,例如下单需要库存、购物车、计算价格等等,全部完成,则为一个事务。

  4. QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。
    对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS,一般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数,用 HPS 来表示对服务器单击请求。

无论 TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:

  • 金融行业:1000TPS~50000TPS,不包括互联网化的活动(秒杀)
    保险行业:100TPS~100000TPS,不包括互联网化的活动
    制造行业:10TPS~5000TPS
    互联网电子商务:10000TPS~1000000TPS
    互联网中型网站:1000TPS~50000TPS
    互联网小型网站:500TPS~10000TPS

最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应)的最大时间。
最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响应)的最少时间。
90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第 90%的响应时间。

从外部看,性能测试主要关注如下三个指标

  • 吞吐量:每秒钟系统能够处理的请求数、任务数(QPS、TPS)。
    响应时间:服务处理一个请求或一个任务的耗时。
    错误率:一批请求中结果出错的请求所占比例。

jmeter

官网下载二进制文件

线程组

在这里插入图片描述

JMeter Address Already in use 错误解决

windows 本身提供的端口访问机制的问题。
Windows 提供给 TCP/IP 链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。

  1. cmd 中,用 regedit 命令打开注册表
  2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下,
    1. 右击 parameters,添加一个新的 DWORD,名字为 MaxUserPort
    2. 然后双击 MaxUserPort,输入数值数据为 65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作哦)
    3. TCPTimedWaitDelay:30(操作和2一样)
  3. 修改配置完毕之后记得重启机器才会生效
    https://support.microsoft.com/zh-cn/help/196271/when-you-try-to-connect-from-tcp-ports-greater-than-5000-you-receive-t

性能优化

我们使用jmeter对接口做了压测,可以得到这个接口的一些性能报告,我们通过衡量这些性能报告,就能知道这个接口有没有符合我们的性能要求,如果不符合,我们就要对接口进行优化。

优化需要考虑多方面:

  • 数据库、应用程序(我们的项目)、中间件(tomcat、nginx)、网络和操作系统等方面
  • 自己的应用属于
    • cpu密集型(cpu用的多,大量的计算)
      我们查到了一堆数据,需要计算、排序、过滤、整合等等
    • 还是io密集型(网络io,磁盘io,数据库io,redis io)。

性能优化主要在应用程序方面主要是优化我们项目接口的代码编写方式和jvm的堆,可以看java虚拟机的1.1.1 堆空间内存分配(默认情况下)

jvm性能监控我们用的是jdk自带的jvisualvm(dos窗口敲jvisualvm即可启动)

在这里插入图片描述
休眠:调用了sleep的线程
等待:使用了wait,等待被唤醒
驻留:线程池里空闲的线程
监视:几个线程发生了锁的竞争(阻塞的线程),正在等待锁的释放

相关内容

热门资讯

深度关注丨促进"四项... 安徽省亳州市健全“纪巡”联动机制,该市市委巡察机构将发现的生态环境保护方面问题线索及时移交市纪委监委...
上海出台23条政策措施 支持长... 近日,上海市科委会同松江区研究制订了《关于支持长三角G60科创走廊策源地建设的若干措施》。《若干措施...
藏格矿业:发布对外投资管理制度 藏格矿业公告称,公司制定对外投资管理制度,规范对外投资行为,明确对外投资需遵循合法合规、符合发展战略...
一审败诉!海峡创新因担保卷入房... 12月25日晚间,海峡创新(300300)发布公告,公司收到浙江省杭州市拱墅区人民法院送达的民事判决...
形势政策系列报告会第三场报告会... 新华社北京12月25日电 由中央宣传部、中央和国家机关工委、教育部、中央军委政治工作部、北京市委联合...
以考提质 以答践责——长春市宽... 12月23日,长春市宽城区举行2025年度领导干部法律知识考试,28名新提拔处级领导干部和31名新提...
获赔200万!比亚迪起诉多个账... 12月25日,比亚迪法务部发文称,近期,就比亚迪起诉“龙哥讲电车”、“满格电新能源”等账号一案,公司...
全国人大常委会法工委:推动物业... 在民生领域,物业管理条例的修订工作备受关注。 12月24日,全国人大常委会法工委法规备案审查室主任严...
韩国涉毒“财阀千金”黄荷娜被捕... 封面新闻记者 雷蕴含 近日,韩国涉毒前科人员黄荷娜因潜逃海外、涉嫌关联电诈、洗钱等多重违法行为被押解...