IT业界中,常听到高性能、高并发、高可用,这“三高”,那么性能的高低如何去评定呢?
一、性能测试的引入
你需要写一只能飞的鸟,结果这只鸟是鸟头做螺旋桨飞起来的:
你需要写个能跑的牛,结果这只牛是用奶当脚来跑的:
你需要写个接水管,结果水流是这么流的:
以上三个例子,都实现了功能性需求,即能用能跑。但鸟飞久了,水流变大了,就像一个系统持续运行和用户并发量增大,其问题也就凸显出来了。某线上的交易功能平时各方面都很棒,却一到节假日高峰期就直接系统瘫痪了,这就需要上线之前,首先做好对应的性能测试。
二、如何做性能测试
性能测试的常见指标:
- QPS
每秒查询率,Queries Per Second,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。QPS = req/sec = 请求数/秒。它代表的是服务器的机器的性能最大吞吐能力。 - TPS
每秒处理的事务数,Transactions Per Second。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。举个栗子:
一个TPS即客户端请求服务端、服务端内部处理、服务端返回客户端。如访问一个页面会请求服务器 3 次,包括一次 html,一次 css,一次 js,那么访问这一个页面就会产生一个“T”,产生三个“Q”。 - PV
页面浏览量,page view。与之相关的RV即repeat visitors,重复访客数量。 - UV
独立访客访问数,unique visitor。 - 并发数
指系统同时能处理的请求数量,反映系统的负载能力。
三、如何提升程序性能
以下列出提升程序性能较为经典的几点,仅供参考:
- 慢 SQL的优化:
一般程序如果响应时间较长,可以首先看一下慢 SQL。分析是否需要增加索引,进行 SQL 优化。
#查询语句
#根据 process_kyes 数量查询慢 SQL
select query_time, query, digest
from information_schema.cluster_slow_query
where is_internal = false
AND time >= '2022-06-16 00:28:00'
AND time < '2022-06-18 00:28:00'
order by Process_keys desc
limit 5;
- 缓存:
针对查询,性能提升最显著的就是引入缓存,但这样同时也会使架构变得复杂。 - 硬件升级:
若程序优化的空间比较小,则考虑升级一下硬件资源,比如服务器配置翻倍,数据库配置翻倍。
四、性能测试常用工具Jmeter
Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能。Jmeter的经典详细教程,移步这里。
附:Jmeter中聚合报告的各项参数详解
参数 | 详解 |
---|---|
Label | 每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值 |
Samples | 表示一共发出了多少个请求。如模拟10个用户,每个用户迭代10次,那么这里显示100 |
Average | 默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间 |
Median | 中位数,即 50% 用户的响应时间 |
90% Line ~ 99% Line | 90% ~99%用户的响应时间 |
Min | 最小响应时间 |
Maximum | 最大响应时间 |
Error% | 错误率,即错误的请求的数量/请求的总数 |
Throughput | 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) |
Received KB/src | 每秒从服务器端接收到的数据量 |
Sent KB/src | 每秒从客户端发送的请求的数量 |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146203.html