-
Notifications
You must be signed in to change notification settings - Fork 20
APM
目录 start
目录 end|2020-10-18 13:59|
Application Perfomance Management
负载测试、压力测试和性能测试
- 测试手段相似,但是目的不同,负载测试是为了发现系统性能问题,性能测试是为了获取性能指标,压力测试是高负载下的负载测试
对于web应用来说 从前端渲染速度,到页面大小,session存储效率,ajax性能,缓存命中率,数据库设计及访问速度 都要考虑。
超出应用性能上限的表现
- 对于web后端来说就是请求过多, 数据库连接池不够用, 线程池大量等待的线程, 请求非常缓慢, 直接返回 5xx 错误码...
- 软硬件版本要和正式服务器保持一致。
- 网络也需要和正式服务器保持一致。
- 在测试高并发的场景下,也要修改linux的默认并发数。
外在指标
- 吞吐量。每秒钟处理的请求数量;
- 响应时间。应用处理一个请求的耗时;
- 错误率。一批请求中出错的请求占比。
内在指标
- CPU。linux下使用top命令;
- 内存。linux下使用top命令;
- 服务器负载。linux下使用uptime命令,按照经验值,服务器负载应位于阀值的70%-80%;
- 网络。主要包括网络流量和网络连接状态的监控,使用nmon工具;
- 磁盘IO linux下可以用iostat监控磁盘状态。
- cat
- Prometheus
可以通过压力测试工具或者流量重放,复制 等方式模拟高并发业务场景
简称 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接口发起请求
具有图形化客户端
-
jmeter
apache 下的开源压测工具
Github地址
参考: wrk 压力测试 http benchmark POST接口
参考: 性能测试之-wrk(转)
- 需要手动编译安装 make
ali
终端内图形化展示结果
Github
比 ab 更强大,能测试出 web 服务能承载的最大服务量及发现潜在问题;比如:内存使用、稳定性。最大优势:可以指定规律进行压力测试,模拟真实环境。
-
【 Algorithm 】
-
【 Blog 】
-
【 C 】
-
【 Database 】
-
【 Distributed 】
-
【 FrontEnd 】
- 【 FrontEnd/Frame 】
- 【 FrontEnd/Node 】
- Font
- Hexo
- JavaScript
- LearnPS
- ResponseCode
- SVG
- ViewSolution
- extjs学习笔记
-
【 Functional 】
-
【 Go 】
-
【 Groovy 】
-
【 Java 】
- 【 Java/AdvancedLearning 】
- 【 JavaBasic 】
- 【 JavaCache 】
- 【 JavaCollection 】
- 【 JavaConcurrency 】
- 【 JavaMap 】
- Annotation
- ClassFile
- Collection
- Concurrency
- Deploy
- Exception
- ExtendsAndInterface
- Generics
- IO
- JDBC
- JDKAndJRE
- JMX
- JVM
- Java11
- Java7
- Java8
- JavaNetwork
- JavaReleaseVersion
- JavaWeb
- JvmPerformance
- MQ
- MultipleLanguage
- Proxy
- Reflection
- Serialize
- SyntaxAndType
- Thread
- WebPerformance
- 【 Java/Android 】
- 【 Java/Ecosystem 】
- 【 Java/MSA 】
- 【 Java/Spring 】
- 【 Java/TemplateEngine 】
- 【 Java/Test 】
- 【 Java/Tool 】
- 【 Java/thread 】
- AlibabaJavaStandard
- DesignPattern
- HashMap解析
- Java-NIO
- Java虚拟机
- Log
- MIS
- Quartz
- RESTful
- WebSocket学习笔记
- ZooKeeper学习笔记
- android学习笔记
- 【 Java/AdvancedLearning 】
-
【 Kotlin 】
-
【 Linux 】
- 【 Linux/Alpine 】
- 【 Linux/Arch 】
- 【 Linux/Base 】
- 【 Linux/Centos 】
- 【 Linux/Container 】
- 【 Linux/Debian 】
- 【 Linux/Tool 】
- JavaDevInit
- Linux系统学习
-
【 MyBlog 】
-
【 Python 】
- 【 Python/Tool 】
- Python
- PythonConcurrent
- PythonGUI
- PythonGame
- PythonNet
- PythonOffices
- PythonWeb
- Python基础
- Python核心学习
-
【 Reactive 】
-
【 Rust 】
-
【 Scala 】
-
【 Script 】
-
【 Skills 】
- 【 Skills/Application 】
- 【 Skills/CS 】
- 【 Skills/Cache 】
- 【 Skills/Councurrency 】
- 【 Skills/DevOps 】
- 【 Skills/Document 】
- 【 Skills/Ecology 】
- 【 Skills/Network 】
- 【 Skills/Search 】
- 【 Skills/SoftwareEngineering 】
- 【 Skills/Spider 】
- 【 Skills/Test 】
- 【 Skills/Vcs 】
- 【 Skills/Work 】
- AppManual
- CelebrityQuotes
- Miscellaneous
- Platform
- Problem
- Protobuf
- RegularExpression
- SoftwareDesignEngineer
- Website
-
【 Windows 】