热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

一个性能问题的分析和妥协过程

前几天一个朋友在做一个项目的性能项目,提到了TPS在120的候,OracleRAC两台机器达到70%的CPU使用率。在我看了数据之后。大体有如下的判断:

前几天一个朋友在做一个项目的性能项目,提到了 TPS 在 120 的候,Oracle RAC 两台机器达到 70 %的 CPU 使用率。在我看了数据之后。大体有如下的判断:

  1. 应用服务器本身在当前的场景下没有出现明显的性能瓶颈。
  2. JVM 回收也很健康。
  3. 网络通信也很正常。
  4. 压力工具端也没有问题。
  5. 数据库中有些问题。

    来看看几个数据:

上图看到 DB Time 很高。DB Time 是前台 session 调用 DB 消耗时间的总和。

下面再看几个数据:

从面的图中可以看到系统硬解析很高。同时在前台的 TOP 10 的耗时的事件中也看到了 libararycache:mutex X 比较高。这个值和硬解析也是有关系的。所以考虑到的第一个严重的性能问题就是硬解析。
当然下面还有一个 TCP Socke t(KGAS) 的事件也是比较大的,这个事情后面再说。
所以我跟那个朋友说,你这个系统硬解析太高,导致现在CPU使用率高。要先解决这个TOP1的问题。

在我觉得我交差了之后,过了一个星期。那个朋友又来找我了,说硬解析的问题没解决。但是修改了一个业务逻辑,让一个SQL不执行了。之前这个 SQL 也是执行的挺多的次数,导致了数据库有锁存在。现在不执行了。TPS上了200。
我说那硬解析怎么办呢?他们说那就不管了吧。业务要改起来也比较麻烦。
我说你们TOP1的问题没有解决,现在这个问题怎么发现的呢。他说是根据业务的执行步骤耗时来看的。于是我说把新的AWR报告给我看一眼。于是看到了如下信息:

我们可以看到这个图中的 TCP Socket(KGAS) 事件没有了。那这个事件是什么意思呢?
其实它是一个网络事件,和数据库本身的性能并无太大关系。但是他们解决 SQ L的业务逻辑的时候这个等待事件也消失了,可见网络的传输少了很多。

为了证实自己的判断。我还和 Oracle 大牛罗老师咨询了下。避免自己的知识还是不够完整导致判断的偏差。

罗老师很认真的给我了一些回复:

看了之后也就是说,这个其他和数据库没关系。就是网络的问题。看来是这个应用逻辑的修改减少了网络的传输量。

再对比硬解析,可以看到,第二次的结果中硬解析更多了。达到了 800 多。而现在这个应用因为TPS可以达到业务的要求,现在也就这样放着了。并且另一个原因是修改起来成本太高。所以系统在这样带着性能问题运行下去,也就只能默默接受了。

想想国内的项目中有多少是性能问题对领导政绩任务的时间和修改成本妥协了。这个问题修改起来复杂吗?从技术上来说,并不复杂。但是性能是个综合考虑的事情。

做性能分析的人要做到的就是问题到底在哪里?要怎么修改?但是具体要不要改,那就要看各利益方的权衡了。


推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文总结了WebSphere应用服务器出现宕机问题的解决方法,重点讨论了关键参数的调整,包括数据源连接池、线程池设置以及JVM堆大小等,旨在提升系统的稳定性和性能。 ... [详细]
  • MySQL性能测试标准倡议:老叶提出的压测基准
    进行MySQL的压力测试通常是为了评估新旧版本之间的性能差异、验证硬件升级的效果、测试参数调整的影响以及评估新业务的负载承受能力。老叶提出了一个MySQL压力测试基准值倡议,旨在促进行业内的标准化和成果共享。 ... [详细]
  • 本文探讨了如何利用 Hibernate 进行高效的批量更新和删除操作,包括直接使用 Hibernate API 的方法及其局限性,以及如何通过 JDBC 或存储过程实现更优的性能。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 本文介绍了MySQL数据库的安全权限管理思想及其制度流程,涵盖从项目开发、数据库更新到日常运维等多个方面的详细流程控制,旨在通过严格的流程管理和权限控制,有效预防数据安全隐患。 ... [详细]
  • 一、Merge语句根据条件在表中执行修改或插入数据的功能,如果插入的数据行在目的表中存在就执行UPDATE,如果是不存在则执行INSERT:-避免了单独 ... [详细]
  • 本文详细介绍了Oracle数据库中审计日志(audit trail)的配置方法及各参数选项的功能,包括如何启用系统范围的审计记录,以及如何将审计数据存储在不同的位置和格式。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • 本文探讨了Oracle数据库中角色的创建与管理方法,包括如何使用SET ROLE命令激活特定角色,并调整用户的默认角色设置。 ... [详细]
  • Java性能优化指南 | 制定有效的性能优化策略
    探讨Java应用性能优化的方法与策略,包括性能测试技巧、常见问题及解决方案,旨在帮助开发者提升系统性能。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • PySpark实战:高效使用DataFrame超越RDD
    本文深入探讨了PySpark中DataFrame的使用方法及其相对于传统RDD的优势,旨在帮助开发者更好地理解和利用这一强大工具。 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
author-avatar
Mr-o蛋挞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有