【性能测试】经验总结2-定位瓶颈与调优方向

定位性能测试瓶颈

对于服务器端问题,需要定位的是硬件相关指标,例如CPU,Memory,Disk I/O,Network I/O。
首先先进行指标分析:

1、cpu占用率高:

top命令查询占用资源利用率最高进程,根据进程pid号查占用资源利用率最高线程,如果是Java应用,就可以用jstack看出此线程正在执行的堆栈,看资源消耗在哪个方法上,查看源代码就知道问题所在。

2、内存占用高:

内存的问题主要看某个进程占用的内存是否非常大以及是否有大量的swap(虚拟内存交换)
磁盘I/O高:通过减少日志输出、异步或换速度快的硬盘来降低繁忙率

3、网络I/O高:

网络I/O主要考虑传输内容大小,不能超过硬件网络传输的最大值70%,可以通过压缩减少内容大小,在本地设置缓存以及分多次传输等操作提高网络I/O性能。

4、中间件

如果以上硬件指标都没有问题,需要查看中间件相关指标,例如:线程池、连接池、JVM等,如果是这些指标问题,需要深入的分析。线程池不够时,增加线程,搞清楚线程为什么阻塞;数据库jbdc连接池不足时,增加连接数,要搞清楚连接为什么没有正常释放。

5、数据库

如果中间件相关指标没问题,需要查看数据库相关指标,例如:慢查询SOL、命中率、锁、参数设置。

6、其他

如果以上指标都正常,应用程序的算法、缓冲、缓存、同步或异步可能有问题

性能调优

性能调优就是对计算机硬件、操作系统和应用有相当深入的了解,调节三者之间的关系,实现整个系统(包括硬件、操作系统、应用)的性能最大化,并能不断的满足现有的业务需求。
性能调优后必须进行功能回归测试

优化方向

性能调优只说一些大的方面,包括硬件、操作系统、应用程序这三大块。
当然还有一块就是程序本身的优化,开发人员根据需求开发出来的程序本身就需要性能优化。
时间换空间:
1、改变应用程序本身的数据结构或者数据格式,减少需要存储的数据的大小。
2、想方设法压缩存在内存中的数据,比如采用某种压缩算法,真正使用时再解压缩
3、把一些内存数据,存放到外部的、更加便宜的存储系统里面,到需要时再取回来。

这些节省内存空间的方法,一般都需要付出时间的代价
预处理/提前处理
1、例如Web中的两种提前加载的方式: preload和prefetch。
2、很多文件系统有预读的功能,就是提前从磁盘读取额外的数据,为下次上层应用程序读数据做准备。
异步处理
缓存
大批量的数据读取到缓存中,不需要反复sql查询

针对数据库MySQL优化例子,可以更加直观的了解。
1)MySQL 编译安装优化
2)MySQL 配置文件优化
3)索引优化
4)MySQL 引擎优化
5)查询缓存优化
6)SQL 语句优化
7)优化表类型(MyISAM或InnoDB)
8)锁机制优化
9)MySQL 服务器优化(换SSD

调优步骤注意事项

1、如果你不懂系统的参数,你千万不要对系统的参数进行随意的改动。
2、每次只对一种系统资源进行系统调试,如CPU、或内存、磁盘。
3、每次改动尽量少的参数设置,推荐每次修改一个设置。
4、分析一项系统资源时,使用多种工具,往往有意想不到的结果。切记过犹不及(宁愿少做一点,不要做过头了,性能已达到要求就不要随意乱动,做好自己的监控)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值