CPU分析系列--性能测试---数据库性能分析

目录

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语句分析)

1.数据库设置

        /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:未使用索引的查询也被记录到慢查询日志中(可选项).

 2.nmon查看服务器状态

        下载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.如果占用过高,一般考虑更换硬件配置.

 3.分析定位性能瓶颈:响应时长过长,TPS低:

        a.查看服务器资源使用情况,如果user态%CPU使用率高,

                1.定位是哪个进程占用率高:

                        是否是mysql进程消耗cpu等资源较多,如果是,

                2.查看响应时间:

                        如果响应时间超过上面设置的慢查询阈值时间,

                3.查询慢查询日志中就有相关sql

                        通过linux三剑客提取访问时间或者访问量最的sql语句

                         (或者通过mysqldumpslow工具分析,要先安装mysqldumpslow工具,

                        使用方法见:

                                mysql 慢查询日志设置_shukebai的专栏-CSDN博客_mysql慢查询日志设置)


                4.在执行计划EXPLAIN中查看执行信息.

                                查看执行计划:

                                EXPLAIN SELECT * FORM ........

                            若执行计划中type=ALL,就说明该条sql语句在执行时进行了全表扫描,说明没有

                            索引,或者索引失效了.让开发加上合理的索引,再复测看调优后是否有性能提升.

       b.查看服务器资源使用情况,如果系统资源占用低,负载小:

                 可能原因:

                1.查看网络:

                           查看网络情况,直接用发压机ping服务器:ping 192.168.xx.xx -t ,查看是否有丢包,

                           如果有丢包,以及延时较大,网络会是瓶颈之一.解决方法:在同一网段压测(局域网,

                           内网),使用千兆网卡.

                2.发压机性能:

                           发压机性能低下,导致压测时本机资源负载高.

                3.连接数:

                           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慢查询慢查询性能问题定位优化完毕,但是本篇只是起到一个抛砖引玉的作用,性能测试是一个很庞大的领域,涉及到这个系统架构,业务逻辑等,需要测试工程师具备很多知识,其他性能问题需要各位自己在工作中不断学习,总结,想要在这个领域深耕,唯有不断的学习,应了古话:路漫漫其修远兮......

猜你喜欢

转载自blog.csdn.net/qq_40132294/article/details/121394124