zoukankan      html  css  js  c++  java
  • 性能调优篇

    在执行性能测试的时候,问题总千奇百怪的。我这里整理了一些常用的性能测试时查看问题的方法。

    一.SQL语句没有引用索引:

    执行性能测试时,服务器的运行情况下:

    1. 数据库、应用程序CPU不超过80%;
    2. 内存足够(空余内存>20M);
    3. 网络正常;
    4. 磁盘输入/输出正常;

    日志没有打印错误,但是TPS很低,如只有100-120(单个接口请求的性能测试,TPS一般会在550-60000这样,除非程序很复杂,那么TPS会小一些)。这种情况下应该先查看SQL的语句是不是存在问题:

      如:

      查询语句,是否有索引,索引有没有起到作用;(是查询语句还要看数据表中的总数据)

    案例:我先前测试的时候,有个查询接口就是存在这样的问题,TPS很低,是因为没有索引导致的,加入索引后,TPS从以前的110到6000这样。

    二.SQL语句索引没有起到作用:

    执行性能测试时,服务器的运行情况下:

    1. 数据库的CPU高达90%-99.9%,应用程序的CPU比较低;
    2. 内存足够(空余内存>20M);
    3. 网络正常;
    4. 磁盘输入/输出正常;

                                                    CPU 很高的监控图

    日志没有打印错误,但是TPS很低,需要查看索引没有起到作用,是否遍历了很多无关的表格数据。

    案例:我先前测试的时候,部分接口就是存在这样的问题,TPS很低,CPU很高,有索引,但是SQL查询的语句写得有问题,遍历很多数据,导致引用的索引失效了。

    可以用EXPLAIN来统计一个查询,SQL会遍历多少次的问题,程序的语句导致大量的表扫描。使用的索引区分度低,表达式中是否带非,导致索引失效,rows的值越大,说明遍历次数越多:

    EXPLAIN SELECT * FROM  tb_hlf_pos_cashier where account=’ XXXXX ’;

    (以上都是在性能测试的时候,SQL语句优化后,性能提高的途径。当然我只是找到问题,具体的SQL语句优化,是开发的同事优化的,所以这里我也只能讲解我了解的知识,很多详细的优化代码我没研究过)

  • 相关阅读:
    zipkin启动报错(Caused by: java.lang.ClassNotFoundException: zipkin.Component)的解决方法
    Java中的long与double的区别
    redis使用笔记
    解决node编程频繁修改代码,需要重启服务器问题
    远程连接mysql要点 虚拟主机定义与分类
    详析静态网站与动态网站区别(服务器ip dns 端口)
    JavaEE-实验四 HTML与JSP基础编程
    JavaEE-实验三 Java数据库高级编程
    JavaEE-实验二 Java集合框架实验
    mysql中文乱码 常见编码问题解决方法分享
  • 原文地址:https://www.cnblogs.com/feng-1314/p/7149251.html
Copyright © 2011-2022 走看看