当出现用户抱怨网站太卡、软硬件需要升级、系统性能不佳等情况,程序员这时需要对系统进行性能调优,实现性能最大化,满足业务的最新需求。

1   为什么要性能调优?

应用上线前在性能上无法满足需求。

应用系统在线上运行后随着系统数据量的不断增长,访问量的不断上升,系统的响应速度越来越慢,已不能满足业务需要。

2   性能调优步骤

1.       衡量系统现状:调优前首先要衡量系统现状,这包括系统的请求次数、响应时间、资源消耗等信息。

2.       设定调优目标:了解系统现状后设定调优目标,通常调优目标是根据用户所能接受的响应速度或系统所拥有的机器以及所支撑的用户量估算出来的,例如 设定调优目标:95%的请求要在500ms内返回。

3.       寻找性能瓶颈:寻找性能瓶颈是找出造成目前系统性能不足的最大瓶颈点,这一步最重要,可结合一些工具来找出瓶颈点。

4.       性能调优:找到瓶颈点后开始进行性能调优。通常需要分析其需求或业务场景,然后结合一些优化的技巧确定优化的策略,优化策略或简或繁,选择其中收益比(优化后的预期效果/优化需要付出的代价)最高的优化方案,进行优化。

优化部署后,继续衡量系统的状况,如已达到目标,则可结束此次调优,如仍未达到目标,则要看是否产生了新的性能瓶颈。

3  寻找性能瓶颈

性能调优的关键不在于怎么进行优化,而是找到当前系统的性能瓶颈,那么系统会存在哪些瓶颈?

  1. 硬件上的性能瓶颈: CPU、内存、磁盘I/O方面的问题。

  2. 应用软件上的性能瓶颈:应用服务器、web服务器等应用软件,还包括数据库系统。

  3. 应用程序上的性能瓶颈:开发人员新开发出来的应用程序。

  4. 操作系统上的性能瓶颈: windows、UNIX、Linux等操作系统。

  5. 网络设备上的性能瓶颈:防火墙、动态负载均衡器、交换机等设备。

4   性能调优包括那些方面?

性能调优较复杂,对程序员知识面要求非常高,性能调优涉及硬件、操作系统(OS\JVM)、应用程序、网络通信、数据库系统、中间件等多个方面。

4.1   硬件优化

重点在硬件的选型和配置,一般来说硬件配置越高越好,根据自身应用类型选择合适的硬件配置。

  1. 负载均衡、Web服务器:性能要求相对较低。

  2. 应用服务器:用于运行应用系统的应用程序吗,对CPU、内存、磁盘要求较高。

  3. 缓存服务器:分为前端页面缓存与后面数据缓存,对内存的要求比较大,一般配置服务器时使用较大内存。

  4. 数据库服务器:对CPU、内存、磁盘的要求高。

  5. 其它服务器:根据具体需求具体分析。

4.2   操作系统优化

操作系统介于硬件和应用之间,配置的不合理很可能引起系统瓶颈。操作系统调优包括内存优化、IO优化、文件系统优化、进程优化等。

4.3   应用优化

应用优化通常是结合数据库的使用效率对SQL进行优化,还需要关注业务逻辑、算法、连接池使用。

·         优化原则

Ø  优化算法,选择合适高效的算法,降低不必要的递归,循环、多层循环嵌套等计算

Ø  使用频率较低的大文件,大对象,大数组等使用完毕后,及时释放

Ø  考虑多线程技术

Ø  降低应用之间通信次数,例用户认证服务,工作流服务,数据库服务

Ø  降低应用之间传输数据量,不必要传输的不传,少传

Ø  分离原则:分离业务模块,如分离大I/O模块、分离高耗内存模块,分离高耗宽带模块

Ø  考虑分布式应用,分布式存储

·         关键SQL语句优化

关键SQL语句包括动态语句和静态语句,其优化方法包括手工方式和工具方式。手工方式需要靠DBA自己分析查询计划,自己使用索引或者表分区技术优化SQL语句;也可以通过工具优化,比如:MySQL SQL Query Analyzer,Oracle SQL Performance Analyzer。

5   传统性能调优方案PK华为云性能调优方案

5.1   传统性调优方案

性能调优代表着时间和成本的支出,用户的等待。程序员往往需要搭建测试工具找到瓶颈点,依靠人工巡检查找故障原因,安装多种监控工具,汇总分析数十个数据,期间可能要花掉数个工程师数周的时间,才得以提升系统性能。传统性能调优高成本、耗时长、专业性强特性已成为阻碍提高用户体验、增加企业营收的绊脚石。

5.2   华为云一站式性能调优

华为云性能测试服务CPTS在应用上线前,通过自定义测试模型模拟复杂场景,瞬间对系统发起高并发压力(万级-百万级),迅速定位性能瓶颈。用户无需代码开发,根据业务需求按需创建压测集群,随用随建,大大节约了测试成本和时间。

当压测发现系统异常后,华为云应用运维管理AOM、应用性能管理APM通过应用与资源告警关联、日志分析、智能阈值、分布式调用追踪、手机APP异常分析等技术,实现分钟级问题快速诊断和修复,直至消灭问题。

5.3   华为云一站式性能调优方案N种优点

·秒级百万并发能力和强大建模能力

提供秒级百万并发能力,模拟瞬间发起大量并发压力,还可以自定义测试任务模型、事务曲线,提供灵活的数据报文,模拟线上用户的真实行为,完美还原真实业务场景。

·资源、应用、业务一站式监控与分析

提供集群、虚机、网络、磁盘、数据库、应用、容器及业务等上百种监控指标与秒级监控,通过集群与虚机、虚机与应用、应用与资源统一建模,对各种指标智能关联分析,用户通过统一的告警入口和下钻找到问题根因。。此外,华为云CPTS的智能分析特性将其和华为云AOM、APM紧密结合,提供一站式的性能分析,展示了TPS、时延、资源使用情况等测试数据。

·应用关系与异常一目了然、故障下钻

对应用健康状态进行可视化管理,包括应用运行状态、时延、错误、负载、依赖关系、各类开源组件。

·实时监控所有进程每一次调用

不仅帮助用户直接找到异常的代码函数,还能还原每个函数调用堆栈、出入参、返回值等。

作者:测试小妹

应用性能调优分析与总结相关推荐

  1. TUNED-ADM 性能调优分析

    @linuxtoy 主题大纲 tuned-adm 简介03 性能调优方向04 性能调优场景09 性能调优分析15 总结49 tuned-adm 简介 RHEL 自带的性能调优工具,通过针对特定应用场景 ...

  2. 【JVM性能调优】jstack和线程dump分析

    一.几个概念: 1.jstack命令的语法格式:jstack <pid>,可用于查看java进程id. 2.Dump文件:Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到 ...

  3. eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战

    上一节我们讲了jinfo,jstat,jmap的使用,还简单的讲了下如何使用jmap导出内存映像文件,这次,我们来实战一把内存溢出问题. 环境准备 首先我们先模拟一下内存溢出的场景,以下这段代码在访问 ...

  4. php xingnengfenxi_PHP 性能分析第三篇: 性能调优实战

    在本系列的 第一篇 中,我们介绍了 XHProf .而在 第二篇 中,我们深入研究了 XHGui UI, 现在最后一篇,让我们把 XHProf /XHGui 的知识用到工作中! 性能调优 不用运行的代 ...

  5. PHP 性能分析第三篇: 性能调优实战

    注意:本文是我们的 PHP 性能分析系列的第三篇,点此阅读 PHP 性能分析第一篇: XHProf & XHGui 介绍 ,或  PHP 性能分析第二篇: 深入研究 XHGui. 在本系列的 ...

  6. Java性能调优工具:MAT内存分析工具,上万字带你彻底了解

    MAT内存分析工具 MAT是MemoryAnalyzerTool的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄漏以及查看内存消耗情况.MAT是 基于Eclipse开发的一款免费的性 ...

  7. 发布即巅峰:Java性能调优六大工具:MAT内存分析工具

    MAT内存分析工具 MAT是MemoryAnalyzerTool的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄漏以及查看内存消耗情况.MAT是 基于Eclipse开发的一款免费的性 ...

  8. JVM性能调优实践——G1 垃圾收集器分析、调优篇

    前言 关于G1 GC以及其他垃圾收集器的介绍可以参考前一篇JVM性能调优实践--G1 垃圾收集器介绍篇.了解了G1垃圾收集器的运行机制之后,就可以针对一些GC相关参数来调整内存分配以及运行策略.下文的 ...

  9. NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等

    NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏链接:NLP领域知识+项目+码源+方案设计 订阅本专栏你能获得什 ...

最新文章

  1. Linux版本之redhat9---gFtp中文乱码解决方案
  2. 64位win10系统无法安装.Net framework3.5的解决方法
  3. linux存储--进程栈 线程栈 内核栈 中断栈(十六)
  4. 刚开始学C 语言 怎么编写小程序,用C 语言 程序怎么样编写一个小程序 工具
  5. boost::mp11::mp_map_keys相关用法的测试程序
  6. FPS, VSync, Triple Buffering
  7. 在windows上搭建redis集群(主从复制)
  8. 面试题 数组长度可否赋值
  9. Linux内核 触摸板,Linux下关闭触摸板和触摸杆
  10. asp毕业设计—— 基于asp+access的图书管理系统设计与实现(毕业论文+程序源码)——图书管理系统
  11. sas入门学习 via.数说工作室
  12. SM4算法大文件加密与字符串加密
  13. 格子广告+php,GitHub - liujijun95/easy-amazon-advertising: 基于 amazon advertising v2 接口的 PHP 广告信息组件...
  14. 尚硅谷 clickHouse
  15. 二维码之zxing二维码解析图片资源
  16. 痞子衡嵌入式:我被邀请做贸泽电子与非网联合推出的《对话工程师》节目嘉宾...
  17. java中比例尺_android 比例尺 源码(二) MyMapView.java
  18. Android:EditText 输入字母时小写自动转为大写
  19. 设计模式-生成器模式
  20. 13-MyBatis 使用了哪些设计模式?在源码中是如何体现的?

热门文章

  1. python java混合编程_详解java调用python的几种用法(看这篇就够了)
  2. android带方框倒计时,简单漂亮的彩色方块计时器和倒计时js代码
  3. 线性dp——cf988F
  4. Oracle or Question Solve(二)
  5. Win10系列:JavaScript 模板绑定
  6. Wcf for wp8 创建wcf服务 连接wp8模拟器并显示来自wcf服务的接口信息 (一)
  7. nginx 499 502 413 404 处理
  8. win7连接sftp_SFTP远程连接服务器上传下载文件-vs2010项目实例
  9. python处理mat数据和处理png的区别_Python---利用scipy.misc等库对jpg以及png等图像数据预处理(用于深度学习喂数据)...
  10. xlwings复制sheet_Python操作Excel的Xlwings教程(六)