- 
                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 】