2)应用软件上的性能瓶颈
一般指的是应用服务器、Web服务器等应用软件,还包括数据库系统。
例如:在WebLogic平台上配置了JDBC连接池的参数,最大连接数为50,最小连接数为5,增加量为10。在测试时发现,当负载增加时,现有的连接数不足,系统会动态生成10个新的连接,导致交易处理的响应时间大大增加。这时可以认为在应用软件上出现了性能瓶颈。
3)应用程序上的性能瓶颈
一般指的是开发人员新开发出来的应用程序。
例如,某程序员开发了一个缴费处理程序。在测试时发现,这个缴费处理程序在处理用户的并发缴费请求时,只能串行处理,无法并行处理,导致缴费交易的处理响应时间非常长,这时可以认为在应用程序上出现了性能瓶颈。
4)操作系统上的性能瓶颈
一般指的是Windows、UNIX、Linux等操作系统。
例如,在Windows操作系统中,对某软件进行性能测试,出现物理内存不足时,如果虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加。这时可以认为在操作系统上出现了性能瓶颈。
5)网络设备上的性能瓶颈
一般指的是防火墙、动态负载均衡器、交换机等设备。
例如,在动态载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡机制没有起到相应的作用,这时可以认为在网络设备上出现了性能瓶颈。
性能瓶颈出现的原因及其定位是十分复杂的,这里只是简单介绍常见的几种瓶颈类型和特征,而性能测试所需要做的就是根据各种情况因素综合考虑,然后协助开发人员一起定位性能瓶颈。
1.一般性能问题调优的步骤
Step01 确定问题。
● 应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。
● 数据库配置:经常引起整个系统运行缓慢,一些诸如Oracle的大型数据库都是需要DBA进行正确的参数调整才能投产的。
● 操作系统配置:不合理就可能引起系统瓶颈。
● 硬件设置:硬盘速度、内存大小等都是容易引起瓶颈的原因,因此这些都是分析的重点。
● 网络:网络负载过重导致网络冲突和网络延迟。
Step02 确定原因。
当确定了问题之后,我们要明确这个问题影响的是响应时间吞吐量,还是其他问题?是多数用户还是少数用户遇到了问题?如果是少数用户,这几个用户与其他用户的操作有什么不同?系统资源监控的结果是否正常?CPU的使用是否到达极限?I/O情况如何?问题是否集中在某一类模块中?是客户端还是服务器出现问题?系统硬件配置是否够用?实际负载是否超过了系统的负载能力?是否未对系统进行优化?
通过这些分析及一些与系统相关的问题,可以对系统瓶颈有更深入的了解,进而分析出真正的原因。
Step03 确定调整目标和解决方案。
提高系统吞吐量,缩短响应时间,更好地支持并发。
Step04 测试解决方案。
对通过解决方案调优后的系统进行基准测试。
Step05 分析调优结果。
系统调优是否达到或者超出了预定目标?系统是整体性能得到了改善,还是以牺牲某部分性能来解决其他问题。调优是否可以结束了?
最后,如果达到了预期目标,调优工作就基本可以结束了。
例如,在数据库中经常会出现查询响应时间较长的问题,解决这种SQL查询响应时间长的问题通常会使用索引来解决。