• <转>【案例分享】压测TPS上不去


    1.      问题描述:

    客户新上的一个关键业务系统,在做上线前的压力测试时,应用的并发无法达到上线前的并发指标和响应时间指标要求。压测时TPS的曲线很不稳定,如下所示:

    QQ图片20170411094541.png

    2.      分析过程:

    从上述知识点可以知道:

    ORACLE中LGWR进程只有一个,由于所有进程在commit前都需要通知lgwr进程帮忙把之前在log buffer中生成的修改过程记录(改变向量)写到磁盘中。

    当大量进程要同时请lgwr进程帮忙写时,就出现排队的情况。

    在高并发的联机交易OLTP系统中,单进程的lgwr进程有可能成为一个大瓶颈,特别是在无法在线日志IO写性能出现问题的情况下。

    因此,我们需要检查lgwr进程的状态。

    通过gv$session观察RAC两个节点lgwr进程写日志的情况,结果如下图所示:

    QQ图片20170411094640.png

    可以看到:

    Ø  RAC(数据库集群)两个节点中,只有1个节点出现log file parallel write的等待,该等待表示lgwr进程正在对磁盘的在线日志文件进行写操作。

    Ø  在state是waiting的情况下,节点1 log file parallel等待的seq#都是35693,但是seconds_in_wait达到了21秒。简单来说,就是lgwr进程写一个IO需要21秒!

    这意味着,压测时所有并发进程必须要发生等待,等lgwr进程完成这个的IO,才可以继续通知LGWR进程帮忙刷log buffer的改变向量,因此从压测的TPS曲线来看,就是不稳定,出现了大幅衰减。

    至此,我们可以肯定,IO子系统有问题

    需要重点排查IO路径下的光纤线、SAN交换机、存储的报错和性能情况。、

    考虑到客户那边管存储的团队/部门可能不承认数据库的IO慢的证据,同时为了让对方增加排查力度,远邦让客户发出以下命令,查看多路径软件的IO情况,结果如下图所示:

    QQ图片20170411094841.png

    节点1上出现明显的IO ERROR,并且在持续增加!

    继续检查节点2,发现节点2上没有任何IO ERROR!

    这个与gv$session仅有一个进程在等log file parallel write写完是完全吻合的。

    3.      原因

    在铁的证据面前,客户的存储团队没有再挣扎,而是开始认认真真逐个在排查,最终在更换了光纤线后问题得到圆满解决。以下是更换光纤线后再次压测的等待事件!

    4.      问题得到解决

    压测的TPS曲线从原来的波浪形

    QQ图片20170411094933.png

    变成了如下的良好曲线

    QQ图片20170411095040.png

  • 相关阅读:
    定时任务、间隔执行任务实现
    界面上小说或视频下载
    简单的打印日志
    无法识别的配置节 system.webServer
    压缩解压
    zabbix初级进阶
    Mysql高可用集群-解决MMM单点故障
    Mycat详解及配置读写分离(Centos7)
    MHA-结合MySQL半同步复制高可用集群(Centos7)
    MySQL全同步复制基于GR集群架构实现(Centos7)
  • 原文地址:https://www.cnblogs.com/1737623253zhang/p/11576519.html
Copyright © 2020-2023  润新知