压力测试
压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统的瓶颈所在。
错误类型:内存泄漏、并发与同步问题
性能指标:
响应时间(RT)用户从客户端发起的一个请求开始,到客户端接受到服务器端返回的响应结束,整个过程所耗费的时间。
HPS:每秒点击数。
TPS:每秒处理交易数。
OPS:每秒处理查询次数。
无论TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好。
最大响应时间:指用户发出请求或者指令到系统做出反应(响应)的最大时间
最少响应时间:指用户发出请求或者指令到系统做出反应(响应)的最少时间
90%响应时间:指所有用户的响应时间排序,第90%的响应时间
从外部看,性能测试主要关注如下三个指标
吞吐量:每秒钟系统能够处理的请求数、任务数。吞吐量大:系统支持高并发。
响应时间:服务处理一个请求或一个任务的耗时。响应时间越短:接口性能越好。
错误率:一批请求中结果出错的请求所占比例。
Jmeter安装
官网:https://jmeter.apache.org/
安装:
解压即可
使用
创建测试计划
添加线程组

添加取样器—Http请求

添加监听器

简单的优化测试:
Edit Configuration —— VM options—— 在Default VM Arguments中输入-Xms128m -Xmx512m
JMeter Address Already in use错误解决

java.net.BindException: Address already in use: connect
windows本身提供的端口访问机制的问题
原因分析:
这个问题的原因是windows端口被耗尽了(默认1024-5000),而且操作系统要 2~4分钟才会重新释放这些端口,所以可以增加windows的可用端口来解决。windows端口最大数为65534
1.cmd中,用regedit命令打开注册表
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,
1 .右击parameters,添加一个新的DWORD,名字为MaxUserPort
2 .然后双击MaxUserPort,输入数值数据为65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作哦)
3.修改配置完毕之后记得重启机器才会生效
性能监测
影响性能考虑点包括:
数据库、应用程序、中间件( tomact、Nginx)、网络和操作系统等方面
首先考虑自己的应用属于CPU密集型还是IO密集型
堆内存和垃圾回收
垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。
Java》.class》类装载器装载到jvm: 方法区,堆,虚拟机栈,本地方法栈,程序计数器。
优化更多在堆。
一块是非堆区(方法区),一块是堆区 堆区分为两大块,一个是Old区,一个是Young区 Young区分为两大块,一个是Survivor区(S0+S1),一块是Eden区 S0和S1一样大,也可以叫From和To
Minor GC:新生代
Major GC:老年代
Full GC: 新生代+老年代+非堆,因为老年代GC绑定了非堆GC
新生代:Eden , From Survivor ,To Survivor
老年代
永久代/原空间
JVM垃圾回收机制详解https://www.jianshu.com/p/23f8249886c6
jconsole和jvisualvm
JVM调优过程中,常用JDK自带的两个工具JConsole和JVisualVM,
cmd输入jconsole 可连接本地和远程,连接远程需要配置
cmd输入jvisualvm 安装Visual GC插件 查看垃圾回收活动
jvisualvm不是内部或外部命令解决:https://visualvm.github.io/ 下载解压,运行jvisualvm.exe
监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析…
运行休眠等待驻留监视
运行:正在运行的
休眠:sleep
等待:wait
驻留:线程池里面的空闲线程监视:阻塞的线程,正在等待锁
安装插件方便查看 gc:
- cmd 启动 jvisualvm
- 工具->插件->可用插件->下载Visual GC->重启jvisualvm
简单优化吞吐量测试
SQL耗时越小越好,一般情况下微秒级别。
命中率越高越好,一般情况下不能低于95%。
锁等待次数越低越好,等待时间越短越好。
中间件越多,性能损失越大,大多都损失在网络交互了。
业务:
- Db(Mysql优化、加索引)
- 模板的渲染速度(CPU、打开缓存 关日志(级别设置为error))
- 静态资源
Nginx动静分离
1、以后将所有项目的静态资源都应该放在nginx里面
2、规则:/static/**所有请求都由nginx直接返回
具体操作:
将静态资源放到nginx的static目录
静态资源的路径前都加上/static/(href、script、src、image、src、url等)
修改nginx中的配置
location /static/ {
root /usr/…
}
模拟线上应用内存崩溃宕机情况
将 VM options 改成 -Xmx100m 进行模拟服务崩溃
防止服务器崩溃:
VM options : -Xmx1024m -Xms1024m -Xmn512m
优化三级分类数据获取
数据库的多次查询变为一次 ,避免频繁的数据库交互

3242

被折叠的 条评论
为什么被折叠?



