zoukankan      html  css  js  c++  java
  • 把剩饭溜溜——记一次简单的性能测试中数据库调优

    其实这种工作几年前也都有做过,真的是靠自学和经验累积,说真的没啥技术含量。

    现象:

    数据库服务器负载过高,按理说一个普通的压测,数据库服务器都是物理机,25核6G这样的配置。非常厉害了,一个百W不到的压力负载正常也该在1以下才合理。

    但实际上一压测负载就上升到6-7甚至更高,直到mysql服务假死掉。

    分析思路:

    1、慢语句

    真的是很奇怪,查看服务器上记录慢语句日志,没有,设置的是超过0.5s会记录,这里竟然没有。

    2、看mysql进程

    show processlists;

    有语句堵住了,按理说,如果真的没有慢语句,那么这里进程根本来不及捕获到,不会停留,会刷刷刷走。

    我们先来分析一下这条语句:

     看一下一个单表查询,竟然没有用到索引,查询结果有20几W条。不慢才怪呢。只能说服务器强大,死的慢一点。

    优化呗,加索引,非常简单。

    加索引过程中遇到的问题:

    这个字段加索引提示错误:      Specified key was too long;max key length is 767 bytes         

    原因是建立索引字段长度过长,那么我们建索引就不能常规执行了。得截取长度。

    Alter table `database_a`.`table_a`    add  index `appToken` (`appToken`(191)) ;

    加上后,负载立马回落到2以下。但不行啊。还是高了。

    3、查看general.log看查询语句是否太多,考虑加缓存

    general.log统计我就不详细讲了。只讲道理

    做了一个测试,压测一个http请求接口5分钟,请求共3W条,general.log中共捕获3W条sql.

    如果业务使然,必须实时,那没话可说,做为一个测试人员,我只管提个建议和风险。

    如果其它接口业务全是这样,那可小心点啦!

  • 相关阅读:
    Codeforces Round #261 (Div. 2) D
    数据类型总结之列表字典
    while +for+字符串
    20150304+JQuery+AJax+插件-02
    20150304+JQuery+AJax+插件-01
    20150303+JQuery选择器-02
    20150303+JQuery选择器-01
    20150302+JQuery-02
    20150302+JQuery-01
    20150228--Ajax2-02
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/10113061.html
Copyright © 2011-2022 走看看