你有过压测的经验吗?
你有过压测的经验吗?
题眼:压测通常需要性能测试和压力测试共同进行。切记,性能测试不等于压力测试。 一样的,过程既是结果,过程大于结果。
压测是一种评估系统在极端条件下性能和稳定性的测试方法。它通过模拟高负载、高并发或资源限制等极端情况,来测试软件系统在超出正常运行条件时的行为和性能。压测在工作中的主要目的是评估当服务需要满足某个大流量高并发的场景时,需要多少资源,并且阈值是多少。(从QPS推测资源)
性能测试是一种软件测试方法,它旨在评估系统在不同工作负载下的性能,包括速度、响应时间、稳定性、资源消耗和吞吐量等指标。说白了,性能测试就是评估服务要想稳定运行需要多少资源,或者说在有限的资源下服务的阈值是多少。有些时候,性能测试也用来评估同一功能不同实现方法中间的性能差距,比如排序算法。(从资源推QPS)
压测工具:Jmeter、Gowrk 性能测试工具:benchmark。
参考答案:
平常开发的时候会写一些go test 开多个协程模拟压测,看一下代码在高并发下会不会有BUG,比如说下单接口就发现过超卖问题,轮播图接口出现过缓存击穿的问题。后面发现其实还有比较好用的工具,比如说可以用apifox模拟压测,然后还有Jmeter、go-wrk这类的专用工具对接口进行压测。然后,我自己的理解,压测主要有两个目的,一方面是为了知道自己服务在当前的资源下性能最大是多少,另一方面是帮助制定一个靠谱的扩容方案,比如说当流量达到一个峰值的时候,我是否需要扩容,扩容到多少才能保证服务不会挂了。后来,我在github上了解benchmark,它可以用来做性能测试。在后面,我自己开发一些接口的时候,会先在本机或者测试环境是写一个性能测试,看下接口有啥超时或者异常业务逻辑。毕竟,压测也挺花时间和资源的,公司也不是每次上线都会压测接口。
(如果有工作经验,可以这样补充)
像压测这种情况,一般是有大型活动的时候,leader会让我们对用到的接口进行排查,按照页面等级划分。比如说首页的接口就是P0级别的,然后给我们一个标准,去压测平台上申请机器,对接口进行压测。这个工作,我也就参与过一次,没有真实上手压测过。但是整个流程我都看了,我们组长手把手给我演示了一遍。你比如说,压测目标是1WQPS,那肯定不能上去就拉满,毕竟不能影响到线上服务。所以我们压测一般是在凌晨,流量比较低的时候,然后第一次压测先拉到三分之一,如果没问题再慢慢压到一半,最后在拉满。中间还要记录各项指标还有告警日志等等这些,最后还要写一份压测报告给领导们看。然后,如果资源没被压满,我们组长还建议继续压一把,看看当服务的CPU负载到90%以上后,最多能抗多少请求,加深对自己服务的理解,便于后续的扩容。
引申:有没有了解过猴子测试吗?了解过混沌工程吗?
