说明:

本文是基于虚拟机演示的,资源有限

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】系列之:性能监控、分析、调优等的更多相关文章

  1. 【性能测试实战】jmeter + k8s + 微服务 + skywalking + efk,测试都在学的热门技术

    原文持续更新完善:https://www.cnblogs.com/uncleyong/p/15475614.html 前言:当前的热门主流技术是哪些?测开为啥那么火?90%以上的测试对测开认识不准确 ...

  2. 【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能测试场景设计

    说明: 本文是基于虚拟机环境配置设计的 性能测试需求 总tps≥100 每个业务的rt<500ms 持续稳定跑50万业务量 单场景 目的:找到单场景的性能问题,为容量场景提供参考,如果低于容量场 ...

  3. Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序

    使用kind构建一个单层架构Node/Express网络应用程序 Kubernetes实战-从零开始搭建微服务 1 前言 准备写一个Kubernetes实战系列教程,毕竟cnblogs作为国内最早的技 ...

  4. Kubernetes实战 - 从零开始搭建微服务 - 1.5 提高可用性-发布多节点的Node/Express网络应用程序

    1.5 提高可用性-发布多节点的Node/Express网络应用程序 Kubernetes实战 - 从零开始搭建微服务 前言 在上一篇文章中,已经学习了如何简单地开发一个单层网络应用.[Kuberne ...

  5. Blazor+Dapr+K8s微服务之开发环境调试

    1         安装Dapr开发调试环境 1.1         Dapr 完整安装模式不支持开发调试 在上一篇随笔<Blazor+Dapr+K8s微服务之服务调用>中,我们通过为每个 ...

  6. 《Spring Cloud构建微服务架构》系列博文示例

    SpringCloud-Learning   源码下载地址:http://download.csdn.net/detail/k21325/9650968     本项目内容为Spring Cloud教 ...

  7. SpringCloud微服务如何优雅停机及源码分析

    目录 方式一:kill -9 java进程id[不建议] 方式二:kill -15 java进程id 或 直接使用/shutdown 端点[不建议] kill 与/shutdown 的含义 Sprin ...

  8. 一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装(转载 https://www.cnblogs.com/alangur/p/8339905.html)

    (一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装   (1)下载erlang: http://www.erlang.org/download/otp_win64 ...

  9. 转载 (三)surging 微服务框架使用系列之我的第一个服务(审计日志)

    (三)surging 微服务框架使用系列之我的第一个服务(审计日志)   前言:前面准备了那么久的准备工作,现在终于可以开始构建我们自己的服务了.这篇博客就让我们一起构建自己的第一个服务---审计日志 ...

随机推荐

  1. 02-JS中的数据类型及类型转换

    02-JS中的数据类型及类型转换 一.数据类型 JS中的值,无论是字面量还是变量,都有明确的类型. (一)概述 1.基本类型5种 number 数字类型 string 字符串类型 boolean 布尔 ...

  2. 安装DataX的管理控制台(转)

    原文地址 https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md 环境准备 1)基础 ...

  3. Matlab R2019b安装中的问题

    1.licens文件以及dll文件的放置 MATLAB的安装镜像文件放置在D:\MATLAB,我们MATLAB安装在D:\MATLAB2019B,在激活过程中,我们需要破解文件夹中的license_s ...

  4. 从SQL Server数据库导出SQL语句

    不同于直接 备份/恢复 或者 导入/导出 数据库操作. 新版本SQL Server客户端中还可以生成相对应的SQL语句. 非常方便与查看和与其他人共享. 连接上数据库后, 右击数据库, 选择 Gene ...

  5. 集合框架-LinkedList集合(有序不唯一)

    1 package cn.itcast.p2.linkedlist.demo; 2 3 import java.util.Iterator; 4 import java.util.LinkedList ...

  6. 将Java连接数据库操作封装到MySQL类中

    public class MySQL { final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; final String D ...

  7. Typora + picgo + Chevereto 优雅地上传图片

    需求:由于经常使用typora写文章,但是配合picgo使用的sm.ms图床,github图床等,速度不稳定,因此我们想要利用自己的服务器搭建自己的图床,将自己文章的图片上传到自己的服务器中,优雅地写 ...

  8. python 小兵(6)函数进阶

    阅读目录 函数参数-动态参数 名称空间 函数的嵌套 gloabal.nonlocal 回到顶部 函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很 ...

  9. react 高阶组件的实现

    由于强大的mixin功能,在react组件开发过程中存在众多不理于组件维护的因素,所以react社区提出了新的方法来替换mixin,那就是高阶组件: 首先在工程中安装高阶组件所需的依赖: npm in ...

  10. AT2401 [ARC072C] Alice in linear land

    基于观察,可以发现这样一条性质: 我们并不关心当前位置和终点的绝对关系,只在乎当前位置和终点的距离,当这个距离确定的时候接下来能走到的位置也是确定的. 基于这个观察可以发现,本质上每个位置的状态就是和 ...