【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能监控、分析、调优等
说明:
本文是基于虚拟机演示的,资源有限
skywalking中拓扑图
kubectl get po -A -owide
测试执行:单场景
查询礼品
jmeter -n -t gift.jmx -l res.jtl -e -o res/
通过下图可以看到,tps>50
压测结果
兑换礼品
见下方性能问题2
查询订单
见下方性能问题1
测试执行:混合场景
12线程
测试执行:稳定性场景
说明:下图大概00:25后tps上升,是因为我把服务器上无关的服务停了
性能问题1:查询订单慢sql
压测执行
jmeter -n -t gift.jmx -l res.jtl -e -o res/
通过下图可以看到,tps在20左右
监控
grafana结果
k8s全局监控
mysql监控,可以看到有慢查询
skywalking链路追踪
可以选择持续时间和时间范围
查看跨度信息,可以看到sql
也可以拆解时间的方式
先进入拓扑图页面,最下面选择时间范围
网关服务
侦察端
订单服务
分析
源码
@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
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
可以看到,配置已经动态更新
回归压测
磁盘
更多性能问题
详见:https://www.cnblogs.com/uncleyong/p/15793624.html
【性能项目实战:jmeter+k8s+微服务+skywalking+efk】汇总
详见:https://www.cnblogs.com/uncleyong/p/15475614.html
【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能监控、分析、调优等的更多相关文章
- 【性能测试实战】jmeter + k8s + 微服务 + skywalking + efk,测试都在学的热门技术
原文持续更新完善:https://www.cnblogs.com/uncleyong/p/15475614.html 前言:当前的热门主流技术是哪些?测开为啥那么火?90%以上的测试对测开认识不准确 ...
- 【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能测试场景设计
说明: 本文是基于虚拟机环境配置设计的 性能测试需求 总tps≥100 每个业务的rt<500ms 持续稳定跑50万业务量 单场景 目的:找到单场景的性能问题,为容量场景提供参考,如果低于容量场 ...
- Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序
使用kind构建一个单层架构Node/Express网络应用程序 Kubernetes实战-从零开始搭建微服务 1 前言 准备写一个Kubernetes实战系列教程,毕竟cnblogs作为国内最早的技 ...
- Kubernetes实战 - 从零开始搭建微服务 - 1.5 提高可用性-发布多节点的Node/Express网络应用程序
1.5 提高可用性-发布多节点的Node/Express网络应用程序 Kubernetes实战 - 从零开始搭建微服务 前言 在上一篇文章中,已经学习了如何简单地开发一个单层网络应用.[Kuberne ...
- Blazor+Dapr+K8s微服务之开发环境调试
1 安装Dapr开发调试环境 1.1 Dapr 完整安装模式不支持开发调试 在上一篇随笔<Blazor+Dapr+K8s微服务之服务调用>中,我们通过为每个 ...
- 《Spring Cloud构建微服务架构》系列博文示例
SpringCloud-Learning 源码下载地址:http://download.csdn.net/detail/k21325/9650968 本项目内容为Spring Cloud教 ...
- SpringCloud微服务如何优雅停机及源码分析
目录 方式一:kill -9 java进程id[不建议] 方式二:kill -15 java进程id 或 直接使用/shutdown 端点[不建议] kill 与/shutdown 的含义 Sprin ...
- 一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装(转载 https://www.cnblogs.com/alangur/p/8339905.html)
(一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装 (1)下载erlang: http://www.erlang.org/download/otp_win64 ...
- 转载 (三)surging 微服务框架使用系列之我的第一个服务(审计日志)
(三)surging 微服务框架使用系列之我的第一个服务(审计日志) 前言:前面准备了那么久的准备工作,现在终于可以开始构建我们自己的服务了.这篇博客就让我们一起构建自己的第一个服务---审计日志 ...
随机推荐
- Windows 和 Ubuntu 的网络能互相 ping 通之后,linux无法上网原因:①路由没设置好,②DNS 没设置好
确保 Windows 和 Ubuntu 的网络能互相 ping 通之后,如果 Ubuntu 无法上网,原因通常有 2 个:路由没设置好,DNS 没设置好. 如果执行以下命令不成功,表示路由没设置好: ...
- [Altium Designer 学习]怎样添加3D模型
对于为给PCB添加3D模型,很多人觉得这是个绣花针的活,中看不中用.在我看来这也未必,特别是常用的3D模型能在网上下载的今天,只需要几个简单的操作,就能使你的PCB更加赏心悦目.除此之外,3D模型还有 ...
- ServletContext接口
Servlet 容器启动时,会为每个 Web 应用(webapps 下的每个目录都是一个 Web 应用)创建一个唯一的 ServletContext 对象,该对象一般被称为"Servlet ...
- golang中将函数当做函数参数使用
package main import ( "fmt" "strings" ) // 使用type关键字让函数变成一个自定义类型 type caseFunc f ...
- gin使用BasicAuth中间件
package mainimport ( "github.com/gin-gonic/gin" "net/http")// 模拟一些私人数据var secret ...
- Android开发----使用 Room 将数据保存到本地数据库
Room介绍以及不使用SQLite的原因 Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库. 处理大量结构化数据的应用可极大地受益于 ...
- 配置Nginx使用Active Directory 做认证
配置Nginx使用AD做认证 nginx.conf 配置 http { ldap_server ldap { url ldap://xxx:389/DC=test,DC=com?sAMAccountN ...
- 在树莓派上开发SpringBoot 之使用VSCode远程开发
一些运行在ARM单板电脑上的IoT应用通常会提供RESTful风格的API接口.本次的文章记录如何在本地电脑上通过VS Code的远程开发功能,在树莓派端创建一个SpringBoot工程,并实现调试和 ...
- Sweetalert模态对话框与Swiper轮播插件、Bootstrap样式组件、AdminLTE后台管理模板地址
Sweetalert纯JS模态对话框插件地址:http://mishengqiang.com/sweetalert/ AdminLTE后台管理模板系统地址(基于Bootstrap):https://a ...
- IIS部署.net core 的程序后,如何查看控制台的日志?
.net core 3.1 开发的web服务,本地开发的时候,双击运行 xxx.exe(.net core 3.1 发布后,文件夹里面有一个 .exe 文件,双击即可运行,会直接监听本地 xx端口测试 ...