zoukankan      html  css  js  c++  java
  • 一次接口压力测试qps极低原因分析及解决过程

    一次接口压力测试qps极低原因分析及解决过程

                                        <p>9-2日在做内部的性能测试相关培训时,发现注册接口压力测试qps极低(20左右),这个性能指标远不能达到上线标准&nbsp;,经过一系列调试,最后定位 98%的时间都花在对&nbsp;用户&nbsp;表&nbsp;做update更新&nbsp;(时间达100ms以上)。</p> 
    

    涉及sql语句:

    update User set loginName='q'
    where userId='ec171d27-f4a8-478c-b557-dffec8f00826'

    分析问题思路:

    1) userId字段没有加索引 验证: 连接数据库之后查看表结构,确实没有做索引。 方案: 给userId加上索引 结果: 未达预期,花费时间基本没变化 分析: 观察表的记录数,才200多条,确实索引不索引对性能影响不会太大,但这个索引还是得加上,只不过没有索引并不是产生这个问题的原因。

    2) 数据表的引擎问题 验证: 连接数据库之后查看表结构,引擎为innodb。 方案: 换成myisam 结果: 达到预期,花费时间不到1ms, 再进行压测,qps达1500以上 分析: 猜测是由于innodb配置导致,查看了my.cnf的配置,一切都用默认的配置,其中 innodbflushlogattrx_commit 默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。

    3) 换回innodb,优化配置 验证: 连接数据库之后查看表结构,引擎为myisam。 方案: 换成innodb, 把innodbflushlogattrx_commit设置为2 结果: 达到预期,花费时间不到1ms, 再进行压测,qps达1500以上 分析: 结果验证了之前的设想。

    总结, innodb本身在设计上比myisam要先进些,但配置相对复杂,有很多优化的点,希望各位同学能多看些文章,理解innodb和myisam的区别以及innodb的优化方案。


                                </div>
                            </div>
    

    原文地址:http://guangla.lofter.com/post/1d337f35_82fe535

  • 相关阅读:
    Navicat Premium 15 永久激活版安装教程
    win10安装redis
    Linux下安装Go环境
    IoT platforms that deserves to be noticed
    TortoiseGit配置
    impot和require区别
    websocket搭建简单的H264实时视频流播放
    应用索引技术优化SQL 语句(Part 3)
    应用索引技术优化SQL 语句(Part 2)
    应用索引技术优化SQL 语句(Part 1)
  • 原文地址:https://www.cnblogs.com/jpfss/p/10974715.html
Copyright © 2011-2022 走看看