性能问题从发现到优化一般思路

本文探讨了从早期到后期系统性能问题的重要性,介绍了性能的定性与定量分析,包括速度和压力维度。讲解了如何通过日志、StopWatch、Arthas等工具发现性能问题,如CPU和内存问题。并提出了优化性能的四个方法和五个层面,如减少请求、空间换时间、任务并行化和异步化,以及在不同层面上的应用案例。
摘要由CSDN通过智能技术生成

1 文章概述

技术系统有一个发展过程,在业务初期主要是实现业务功能和目标,由于数据和访问量都不大,所以性能问题并不作为首要考虑。

但是随着业务发展,随着数据和访问量增大甚至激增,造成例如首页五秒钟才能展示等问题,这种不佳体验会造成用户流失,此时性能就是必须面对之问题。我们把技术系统分为早期、中期、后期三个阶段:

  • 早期:主要实现业务需求,性能非重点考虑
  • 中期:性能问题注解显现,影响业务发展
  • 后期:技术迭代性能与业务必须同时考虑

如何发现性能问题,并且最终如何解决性能问题就是本文讨论之要点。

2 什么是性能

我们可以从四个维度介绍什么是性能:

  • 两个维度定义性能:
    • 速度慢
    • 压力大
  • 两个维度描述性能:
    • 定性:直观感受
    • 定量:指标分析

3 发现性能问题

3.1 定性 + 速度

一个页面需要长时间打开,一个列表很慢才能加载完成,一个接口访问导致超时异常,这些显而易见之问题可以归为此类。

3.2 定量 + 速度

3.2.1 速度指标

一个公司有7200名员工,每天上班打卡时间是早上8点到8点30分,每次打卡时间系统执行时长5秒,那么RT、QPS、并发量分别是多少?

RT表示响应时间,问题已经包含答案:

  • RT = 5秒

QPS表示每秒访问量,假设行为平均分布:

  • QPS = 7200 / (30 * 60) = 4

并发量表示系统同时处理请求数:

  • 并发量 = QPS x RT = 4 x 5 = 20

根据上述实例引出公式:

  • 并发量 = QPS x RT

3.2.2 QPS VS TPS

QPS(Queries Per Second):每秒查询量

TPS(Transactions Per Second):每秒事务数

需要注意此事务并不是指数据库事务,而是包括以下三个阶段:

  • 接收请求
  • 处理业务
  • 返回结果
QPS = N * TPS (N>=1)

N=1表示接口有一个事务:

public class OrderService {

    public Order queryOrderById(String orderId) {
        return orderMapper.selectById(orderId);
    }
}

N>1表示接口有多个事务:

public class OrderService {

    public void updateOrder(Order order) {
        // transaction1
        orderMapper.update(order);
        // transaction2
        sendOrderUpdateMessage(order);
    }
}

3.2.3 发现问题

(1) 打印日志

public class FastTestService {

    public void test01() {
        long start = System.currentTimeMillis();
        biz1();
        biz2();
        long costTime = System.currentTimeMillis() - start;
        System.out.println("costTime=" + costTime);
    }

    private void biz1() {
        try {
            System.out.println("biz1");
            Thread.sleep(500L);
        } catch (Exception ex) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值