• 【性能测试实战: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

    测试执行:混合场景

    10线程

    12线程

    测试执行:稳定性场景

    性能问题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

    可以看到,配置已经动态更新

    回归压测

    磁盘

    更多性能问题

    待更新

    【性能项目实战:jmeter+k8s+微服务+skywalking+efk】汇总

    详见:https://www.cnblogs.com/uncleyong/p/15475614.html

    ============================= 提升自己 ==========================
    > > > 1、咨询问题,请加作者微信: ren168632201
    > > > 2、性能测试从0到实战: https://www.cnblogs.com/uncleyong/p/12311432.html
    > > > 3、自动化测试实战: https://www.cnblogs.com/uncleyong/p/12016690.html
    > > > 4、测试基础汇总: https://www.cnblogs.com/uncleyong/p/10530261.html
    > > > 5、声明:如有侵权,请联系删除。
    ============================= 升职加薪 ==========================
  • 相关阅读:
    Block编程
    自己写Web服务器(续)
    C# 2.0对现有语法的改进
    使用CDN
    优化网站设计(一):减少请求数
    MongoDB Shell的使用
    memcache 和appfabric
    go语言中几个有趣的特性以及对go的看法
    bpm流程平台
    Socket编程 (异步通讯) (Tcp,Udp)Part2
  • 原文地址:https://www.cnblogs.com/uncleyong/p/15752370.html
Copyright © 2020-2023  润新知