性能测试实战系列(17):压测执行 - 单场景(含监控、分析、调优、回归)
本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/15475614.html
补充:skywalking中拓扑图、k8s中pod
kubectl get po -A -owide
查询礼品
非gui执行命令:jmeter -n -t gift.jmx -l res.jtl -e -o res/
通过下图可以看到,tps>50
压测结果
兑换礼品
见下方性能问题2
查询订单
见下方性能问题1
性能问题1:查询订单慢sql
压测执行
jmeter -n -t gift.jmx -l res.jtl -e -o res/
通过下图可以看到,tps在20左右
监控
grafana结果
k8s全局监控
mysql监控,可以看到有慢查询
skywalking链路追踪
可以选择持续时间和时间范围
查看跨度信息,可以看到sql
也可以拆解时间的方式
先进入拓扑图页面,最下面选择时间范围
分析
源码
1 2 | @Select( "select o.id,o.order_number as orderNumber,o.order_product_name as orderProductName,o.order_price as orderPrice,o.count,o.buy_date as buyDate from orders o where order_number = #{orderNumber}" ) Order findByProductId(@Param( "orderNumber" ) String orderNumber); |
执行计划:explain select o.id,o.order_number,o.order_product_name,o.order_price,o.count,o.buy_date from orders o where o.order_number = 'n305udx6jqu2pjxt';
扫全表
调优
create unique index index_order_number on orders(order_number);
回归压测
jmeter -n -t gift.jmx -l res.jtl -e -o res/
mysql监控中,没看到慢查询了
链路追踪
性能问题2:兑换礼品网关超时
压测执行
jmeter -n -t gift.jmx -l res.jtl -e -o res/
监控
k8s
jmeter
查看html报告
通过gui方式压测(这里只是为了直观看到错误信息,并不推荐gui方式压测),可以看到是网关超时
分析
进入ingress:kubectl exec -it -n ingress-nginx po/ingress-nginx-controller-qc299 -- sh
搜索:gateway
到## start server gateway.gifts.com下的location下
如果http请求超过了60秒再返回,连接就会被nginx中断,就会报504的错误:gateway time-out
调优
重新设置nginx超时时间,将超时时间设置为3600,就是一个小时,这个值可以灵活设置,就是不让他在默认60秒断开链接。
在gateway的ingress中新增
vim gateway-skywalking.yaml
1 2 3 | annotations: #注解信息 kubernetes.io/ingress. class : "nginx" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" |
kubectl replace -f gateway-skywalking.yaml
进入ingress:kubectl exec -it -n ingress-nginx po/ingress-nginx-controller-qc299 -- sh
可以看到,配置已经动态更新
回归压测
性能问题3:磁盘满
待更新...
__EOF__

关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
2021-01-03 【性能测评】来测试下自己是否真的会性能测试了