Web性能调优
Contents
💠
-
- 数据库
- 4.0.1. MySQL
- 4.0.1.1. 主从复制以及读写分离
- 4.0.1. MySQL
- 数据库
💠 2024-09-06 11:36:43
Web应用性能优化
负载测试、压力测试和性能测试
- 测试手段相似,但是目的不同,负载测试是为了发现系统性能问题,性能测试是为了获取性能指标,压力测试是高负载下的负载测试
对于web应用来说 从前端渲染速度,到页面大小,session存储效率,ajax性能,缓存命中率,数据库设计及访问速度 都要考虑。
客户端
渲染和计算分离
服务端
- 对于web后端来说就是请求过多, 数据库连接池不够用, 线程池大量等待的线程, 请求非常缓慢, 直接返回 5xx 错误码…
压力测试准备
- 软硬件版本要和正式服务器保持一致。
- 网络也需要和正式服务器保持一致。
- 在测试高并发的场景下,也要修改linux的默认并发数。
性能基准 指标
外在指标
- 吞吐量。每秒钟处理的请求数量;
- 响应时间。应用处理一个请求的耗时;
- 错误率。一批请求中出错的请求占比。
内在指标
- CPU。linux下使用top命令;
- 内存。linux下使用top命令;
- 服务器负载。linux下使用uptime命令,按照经验值,服务器负载应位于阀值的70%-80%;
- 网络。主要包括网络流量和网络连接状态的监控,使用nmon工具;
- 磁盘IO linux下可以用iostat监控磁盘状态。
性能监控平台
- CAT
- Prometheus
测试工具
可以通过压力测试工具或者流量重放,复制 等方式模拟高并发业务场景
Apache BenchMark
简称 ab Doc
-
安装
sudo apt install apache2-utils
|sudo pacman -S apache-tools
-
简单使用
ab -c 并发数 -n 总请求数 URL
- 查看文档:
man ab
或ab -h
- 查看文档:
-
测试本机超过100连接报错 104:
-
ab -c 5 -n 1000 -X 127.0.0.1:8888 -T application/json -p list.json -C 'JSESSIONID=xxx' URL
使用 Cookie并使用代理 对参数为json的接口发起请求 -
设置Header
-H “AUTHORIZATION: Basic YWRtaW46YWRtaW4=“
Jmeter
wrk
Github地址
参考: wrk 压力测试 http benchmark POST接口
参考: 性能测试之-wrk(转)
- 需要手动编译安装 make
ali
ali
终端内图形化展示结果
Httperf
Github
比 ab 更强大,能测试出 web 服务能承载的最大服务量及发现潜在问题;比如:内存使用、稳定性。最大优势:可以指定规律进行压力测试,模拟真实环境。
k6
Github k6
像单元测试一样做性能测试
数据库
MySQL
主从复制以及读写分离
Author Kuangcp
LastMod 2018-12-13