目录
- 一、应用性能问题分析方法论
- 二、压力测试简介
- 三、使用Apache JMeter进行压力测试
- 四、服务器硬件资源监控
- 五、压测监控平台
- 六、性能优化及影响因素
回到顶部
性能优化的终极目标:用户体验 = 产品设计(非技术) + 系统性能 ≈ 系统性能 = 快
应用性能调优是个大工程,涉及指标、和影响因素。
一、性能指标
性能指标主要包括:web端性能指标、后端性能指标和移动端性能指标。对于后端的TPS和RT,影响因素包括数据库读写、RPC、网络IO、逻辑计算复杂度、JVM等。
二、压力测试基础
压力测试是对系统不断施加压力,以预估系统负载能力的一种测试。只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行压力测试。压力测试的目的包括观察系统各项性能指标的变化情况,发现系统的性能短板,进行针对性的性能优化,以及判断系统在高并况下是否会报错。
三、使用Apache JMeter进行可视化工具压测
Apache JMeter 是一个基于Java的压力测试工具,最初设计用于Web应用测试,但后来扩展到其他测试领域。本节将详细介绍如何使用JMeter创建压测计划、配置线程组以及进行http请求等操作。包括JMeter的插件安装与配置,以支持更多的可视化指标。
1. 创建测试计划是第一步,需要设置测试名称、线程数等基本信息。
2. 配置线程组是关键步骤之一,需要设置线程数、Ramp-Up Period(建立全部线程耗时)等参数。
3. 配置http请求时,需要选择Java并启用keepalive方式,以避免频繁的建立和关闭连接,消耗性能。
4. 配置断言和器是确保测试结果准确性的重要步骤。
四、服务器硬件资源监控
服务器硬件资源监控主要包括使用操作系统命令监控和使用JMeter压测工具perfmon。通过监控CPU、内存、网络IO等关键指标,可以及时了解服务器的运行状态。可以结合Grafana+Prometheus+node_exporter等工具进行更全面的服务器监控。
五、压测监控平台搭建与应用
压测监控平台用于收集JMeter压测数据和服务器指标数据。通过配置后端器,将JMeter的测试数据同步到InfluxDB等时间序列数据库中,以便后续分析和可视化展示。可以使用Grafana等工具对数据进行可视化展示和分析。
在搭建压测平台时,需要准备多台机器,包括压力机、应用服务主机、数据库与缓存服务器和CICD服务器等。每台机器都需要进行相应的配置和优化,以确保系统的稳定性和性能。
六、性能优化及影响因素
性能优化需要考虑产品设计、基础网络、代码质量&架构、移动端环境、硬件及云服务等多个因素。通过不断优化这些因素,可以提高系统的响应时间、吞吐量等关键性能指标,从而提高用户体验和系统性能。需要定期进行性能测试和监控,及时发现和解决问题。
百分位指标:关注响应时间的特定百分比表现,例如P90、P95、P99,以深入了解系统性能。
测试内容标识:指的是`events`表中`text`字段的内容,这些内容对于后续的测试分析至关重要。
任务标签集:任务相关标签,常与Grafana结合使用,以实现任务的可视化管理和分析。
完成上述的准备工作后,你可在`influxDB`中校验数据是否正确录入。
安装Grafana步骤
镜像下载:首先需从官方源获取Grafana的镜像文件。
容器启动:启动Grafana容器,并将容器的3000端口映主机网络端口上,便于后续访问。
验证部署状态:通过浏览器访问`ip:3000`,使用默认账户密码`admin/admin`来验证Grafana是否成功部署。
数据源添加:在Grafana中进入“DATA SOURCE”设置,选择并添加`Influxdb`作为数据源。
模板导入方式:Grafana支持三种模板导入方式——直接输入模板ID、上传模板JSON文件、直接输入模板JSON内容。可至Grafana,找到所需的展示模板如Apache JMeter Dashboard,如`dashboad-ID:5496`的JMeter Dashboard 3.2及以上版本或`dashboad-ID:3351`。
数据源选择与展示:在Grafana中选择对应的数据源后,即可开始展示相关数据。
其他相关安装与配置步骤
node_exporter安装:在服务部署的机器上安装`node_exporter`。
Prometheus安装:在监控平台机器上安装`Prometheus`。
访问验证:通过浏览器访问`IP:9090/targets`来验证Prometheus是否正常运行。
在Grafana中进一步配置Prometheus数据源
配置步骤详解:在Grafana中细致地配置Prometheus数据源的各项参数。
Linux展示模板导入:Grafana支持导入Linux系统相关的仪表板模板,如`Node Exporter for Prometheus Dashboard EN 20201010`的dashboard ID为11074,以及`Node Exporter Dashboard`的dashboard ID为16098。