走到查询这的时候 该到哪一层了;是走容器中间件 还是数据库 中间件:tomcat,Nginx,uWGSI 做性能测试之前,需要有性能指标!!
TPS过低逐个排查:
分析点是
1、网络带宽,各种连接数比如tomcat,
2、数据库啊,数据库的配置啊,比如sql没有索引,没有主键,
3、硬件资源,
4、压力机的资源,
5、缓存啊,缓存命中率,
6、最大内存数,最大使用内存.
7、还有就是垃圾回收机制
(jdk里面)监控的东西:数据库,中间器,redis,线程,服务器(JDK自带监控工具:jconsole.exe和jvisualvm.exe这两款JVM分析工具)
jconsole的使用:
编辑java文件,javac运行java文件,生成class文件,java运行class文件(cpu利用率90,不超过90,就合格了)
Jmeter设置1000线程数报错的原因:
1、Jmeter配置文件没有设置最大内容设置,占用内存解决内存溢出的情况(单台大数量并发)
2、开发没有把数据库线程池限制了(慢查询首先考虑的点)
3、日志级别:测试会生成大量的调试日志文件,会耗费大量服务器资源(tps过低的点)
4、tomcat连接数也可以进行调优.(tps过低的点)
解决方案:
问题1解决方式:针对jmeter占用内存解决内存溢出的情况
1、编辑打开jmeter.bat目录
-Xmx512m -Xms512m
-Xms是初始内存,-Xmx是最大占用内存
2、在桌面”我的电脑”右键,查看属性
机器内存是12G,然后我这里设置jmeter的内存占用情况。
set HEAP=-Xms1024m -Xmx4096m
问题2解决方式:数据库的最大连接数是默认,过低
1、找开发把数据库连接数调大(根据系统本身去调整,并不是越大越好),方便性能调优
问题3解决方式:日志级别:测试会生成大量的调试日志文件,会耗费大量服务器资源
1、有运维找运维把日志文件配置级别设置最大级别,没运维找开发。方便性能调优