目录
1.数据库设置
2.nmon查看服务器状态
3.分析定位性能瓶颈:响应时长过长,TPS低:
a.查看服务器资源使用情况,如果user态%CPU使用率高,
1.定位是哪个进程占用率高:
2.查看响应时间:
3.查询慢查询日志中就有相关sql
4.在执行计划EXPLAIN中查看执行信息.
b.查看服务器资源使用情况,如果系统资源占用低,负载小:
1.查看网络:
2.发压机性能:
3.连接数:
性能测试中,数据库服务的性能低下拖累整个系统性能表现是很常见的,以下以数据库mysql中慢查询为例讲解常见的性能分析及调优手段.
使用到的工具:
jmeter(施压)---nmon(监控)---mysqldumpslow(日志分析)---workbench/navicat(sql语句分析)
/etc/my.cnf文件中设置慢查询配置:
slow_query_log=1:是否开启慢查询日志,1表示开启,0表示关闭。
slow-query-log-file=/tmp/mysql_slow_query.log:MySQL数据库慢查询日志存储路径。
long_query_time=0.5:慢查询阈值设为0.5s,当查询时间多于设定的阈值时,记录日志。
log_queries_not_using_indexes=1:未使用索引的查询也被记录到慢查询日志中(可选项).
下载nmon:nmon for Linux | Site / Download
解压:tar -zxvf nmon16e_mpginc.tar.gz
创建目录:mkdir /root/nmon
将文件移动到目录:mv nmon_x86_64_centos7 /root/nmon
进入目录:cd /root/nmon
增加权限:chmod 777 nmon_x86_64_centos7
执行命令: ./nmon_x86_64_centos7
c:查看CPU相关信息; m:查看内存相关信息; d:查看磁盘相关信息; n:查看网络相关信息; t:查看相关进程信息; h:查看帮助相关信息.
CPU中:
User%:表示用户态进程占用的CPU,一般是应用进程或者数据库进程占用.
Sys%:表示系统进程占用的CPU.如果占用过高,一般考虑更换硬件配置.
是否是mysql进程消耗cpu等资源较多,如果是,
如果响应时间超过上面设置的慢查询阈值时间,
通过linux三剑客提取访问时间或者访问量最的sql语句
(或者通过mysqldumpslow工具分析,要先安装mysqldumpslow工具,
使用方法见:
mysql 慢查询日志设置_shukebai的专栏-CSDN博客_mysql慢查询日志设置)
查看执行计划:
EXPLAIN SELECT * FORM ........
若执行计划中type=ALL,就说明该条sql语句在执行时进行了全表扫描,说明没有
索引,或者索引失效了.让开发加上合理的索引,再复测看调优后是否有性能提升.
可能原因:
查看网络情况,直接用发压机ping服务器:ping 192.168.xx.xx -t ,查看是否有丢包,
如果有丢包,以及延时较大,网络会是瓶颈之一.解决方法:在同一网段压测(局域网,
内网),使用千兆网卡.
发压机性能低下,导致压测时本机资源负载高.
1.tomcat应用的连接数设置是否合理:tomcat的server.xml中查看修改;
2.tomcat webapps中应用连接数据库的连接数设置是否合理:
3.数据库本身的连接池连接数设置是否合理:
show variables like '%max_connections%';
MYSQL官网给出了一个设置最大连接数的建议比例:
Max_used_connections / max_connections * 100% ≈ 85%
查看当前数据库已建立连接数:
show status like 'Threads_connected' ;
MYSQL常用全局配置:
至此,mysql慢查询慢查询性能问题定位优化完毕,但是本篇只是起到一个抛砖引玉的作用,性能测试是一个很庞大的领域,涉及到这个系统架构,业务逻辑等,需要测试工程师具备很多知识,其他性能问题需要各位自己在工作中不断学习,总结,想要在这个领域深耕,唯有不断的学习,应了古话:路漫漫其修远兮......