zoukankan      html  css  js  c++  java
  • 应用性能调优分析与总结

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

    1   为什么要性能调优?

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

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

    2   性能调优步骤

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

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

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

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

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

    3  寻找性能瓶颈

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

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

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

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

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

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

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

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

    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   传统性调优方案

    image.png

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

    5.2   华为云一站式性能调优

    image.png

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

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

     

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

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

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

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

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

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

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

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

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

    作者:测试小妹

  • 相关阅读:
    Codeforces 1249 F. Maximum Weight Subset
    Codeforces 1249 E. By Elevator or Stairs?
    Codeforces 1249 D2. Too Many Segments (hard version)
    使用subline作为Stata外部编辑器,并实现代码高亮
    Getting a handle on
    Economics degrees
    The threat to world
    他山之石,calling by share——python中既不是传址也不是传值
    Python的几个爬虫代码整理(网易云、微信、淘宝、今日头条)
    一梦江湖费六年——QQ群聊天分析
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165106.html
Copyright © 2011-2022 走看看